mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 17:04:47 +00:00
style: format code with black
This commit is contained in:
@@ -1 +1 @@
|
||||
global_test_dependencies = ['User', 'Company', 'Item']
|
||||
global_test_dependencies = ["User", "Company", "Item"]
|
||||
|
||||
@@ -4,7 +4,8 @@ import frappe
|
||||
|
||||
from erpnext import encode_company_abbr
|
||||
|
||||
test_records = frappe.get_test_records('Company')
|
||||
test_records = frappe.get_test_records("Company")
|
||||
|
||||
|
||||
class TestInit(unittest.TestCase):
|
||||
def test_encode_company_abbr(self):
|
||||
@@ -12,23 +13,30 @@ class TestInit(unittest.TestCase):
|
||||
abbr = "NFECT"
|
||||
|
||||
names = [
|
||||
"Warehouse Name", "ERPNext Foundation India", "Gold - Member - {a}".format(a=abbr),
|
||||
" - {a}".format(a=abbr), "ERPNext - Foundation - India",
|
||||
"Warehouse Name",
|
||||
"ERPNext Foundation India",
|
||||
"Gold - Member - {a}".format(a=abbr),
|
||||
" - {a}".format(a=abbr),
|
||||
"ERPNext - Foundation - India",
|
||||
"ERPNext Foundation India - {a}".format(a=abbr),
|
||||
"No-Space-{a}".format(a=abbr), "- Warehouse"
|
||||
"No-Space-{a}".format(a=abbr),
|
||||
"- Warehouse",
|
||||
]
|
||||
|
||||
expected_names = [
|
||||
"Warehouse Name - {a}".format(a=abbr), "ERPNext Foundation India - {a}".format(a=abbr),
|
||||
"Gold - Member - {a}".format(a=abbr), " - {a}".format(a=abbr),
|
||||
"Warehouse Name - {a}".format(a=abbr),
|
||||
"ERPNext Foundation India - {a}".format(a=abbr),
|
||||
"Gold - Member - {a}".format(a=abbr),
|
||||
" - {a}".format(a=abbr),
|
||||
"ERPNext - Foundation - India - {a}".format(a=abbr),
|
||||
"ERPNext Foundation India - {a}".format(a=abbr), "No-Space-{a} - {a}".format(a=abbr),
|
||||
"- Warehouse - {a}".format(a=abbr)
|
||||
"ERPNext Foundation India - {a}".format(a=abbr),
|
||||
"No-Space-{a} - {a}".format(a=abbr),
|
||||
"- Warehouse - {a}".format(a=abbr),
|
||||
]
|
||||
|
||||
for i in range(len(names)):
|
||||
enc_name = encode_company_abbr(names[i], abbr=abbr)
|
||||
self.assertTrue(
|
||||
enc_name == expected_names[i],
|
||||
"{enc} is not same as {exp}".format(enc=enc_name, exp=expected_names[i])
|
||||
"{enc} is not same as {exp}".format(enc=enc_name, exp=expected_names[i]),
|
||||
)
|
||||
|
||||
@@ -10,9 +10,9 @@ from frappe.desk import notifications
|
||||
|
||||
class TestNotifications(unittest.TestCase):
|
||||
def test_get_notifications_for_targets(self):
|
||||
'''
|
||||
Test notification config entries for targets as percentages
|
||||
'''
|
||||
"""
|
||||
Test notification config entries for targets as percentages
|
||||
"""
|
||||
|
||||
company = frappe.get_all("Company")[0]
|
||||
frappe.db.set_value("Company", company.name, "monthly_sales_target", 10000)
|
||||
@@ -21,7 +21,7 @@ class TestNotifications(unittest.TestCase):
|
||||
config = notifications.get_notification_config()
|
||||
doc_target_percents = notifications.get_notifications_for_targets(config, {})
|
||||
|
||||
self.assertEqual(doc_target_percents['Company'][company.name], 10)
|
||||
self.assertEqual(doc_target_percents["Company"][company.name], 10)
|
||||
|
||||
frappe.db.set_value("Company", company.name, "monthly_sales_target", 2000)
|
||||
frappe.db.set_value("Company", company.name, "total_monthly_sales", 0)
|
||||
@@ -29,4 +29,4 @@ class TestNotifications(unittest.TestCase):
|
||||
config = notifications.get_notification_config()
|
||||
doc_target_percents = notifications.get_notifications_for_targets(config, {})
|
||||
|
||||
self.assertEqual(doc_target_percents['Company'][company.name], 0)
|
||||
self.assertEqual(doc_target_percents["Company"][company.name], 0)
|
||||
|
||||
@@ -14,11 +14,11 @@ from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
|
||||
class TestPointOfSale(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
frappe.db.savepoint('before_test_point_of_sale')
|
||||
frappe.db.savepoint("before_test_point_of_sale")
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls) -> None:
|
||||
frappe.db.rollback(save_point='before_test_point_of_sale')
|
||||
frappe.db.rollback(save_point="before_test_point_of_sale")
|
||||
|
||||
def test_item_search(self):
|
||||
"""
|
||||
|
||||
@@ -7,15 +7,16 @@ import erpnext
|
||||
|
||||
@erpnext.allow_regional
|
||||
def test_method():
|
||||
return 'original'
|
||||
return "original"
|
||||
|
||||
|
||||
class TestInit(unittest.TestCase):
|
||||
def test_regional_overrides(self):
|
||||
frappe.flags.country = 'India'
|
||||
self.assertEqual(test_method(), 'overridden')
|
||||
frappe.flags.country = "India"
|
||||
self.assertEqual(test_method(), "overridden")
|
||||
|
||||
frappe.flags.country = 'Maldives'
|
||||
self.assertEqual(test_method(), 'original')
|
||||
frappe.flags.country = "Maldives"
|
||||
self.assertEqual(test_method(), "original")
|
||||
|
||||
frappe.flags.country = 'France'
|
||||
self.assertEqual(test_method(), 'overridden')
|
||||
frappe.flags.country = "France"
|
||||
self.assertEqual(test_method(), "overridden")
|
||||
|
||||
@@ -8,12 +8,11 @@ class TestSearch(unittest.TestCase):
|
||||
# Search for the word "cond", part of the word "conduire" (Lead) in french.
|
||||
def test_contact_search_in_foreign_language(self):
|
||||
try:
|
||||
frappe.local.lang = 'fr'
|
||||
output = filter_dynamic_link_doctypes("DocType", "cond", "name", 0, 20, {
|
||||
'fieldtype': 'HTML',
|
||||
'fieldname': 'contact_html'
|
||||
})
|
||||
result = [['found' for x in y if x=="Lead"] for y in output]
|
||||
self.assertTrue(['found'] in result)
|
||||
frappe.local.lang = "fr"
|
||||
output = filter_dynamic_link_doctypes(
|
||||
"DocType", "cond", "name", 0, 20, {"fieldtype": "HTML", "fieldname": "contact_html"}
|
||||
)
|
||||
result = [["found" for x in y if x == "Lead"] for y in output]
|
||||
self.assertTrue(["found"] in result)
|
||||
finally:
|
||||
frappe.local.lang = 'en'
|
||||
frappe.local.lang = "en"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,132 +7,143 @@ from erpnext.buying.doctype.purchase_order.test_purchase_order import create_pur
|
||||
|
||||
class TestWebsite(unittest.TestCase):
|
||||
def test_permission_for_custom_doctype(self):
|
||||
create_user('Supplier 1', 'supplier1@gmail.com')
|
||||
create_user('Supplier 2', 'supplier2@gmail.com')
|
||||
create_supplier_with_contact('Supplier1', 'All Supplier Groups', 'Supplier 1', 'supplier1@gmail.com')
|
||||
create_supplier_with_contact('Supplier2', 'All Supplier Groups', 'Supplier 2', 'supplier2@gmail.com')
|
||||
po1 = create_purchase_order(supplier='Supplier1')
|
||||
po2 = create_purchase_order(supplier='Supplier2')
|
||||
create_user("Supplier 1", "supplier1@gmail.com")
|
||||
create_user("Supplier 2", "supplier2@gmail.com")
|
||||
create_supplier_with_contact(
|
||||
"Supplier1", "All Supplier Groups", "Supplier 1", "supplier1@gmail.com"
|
||||
)
|
||||
create_supplier_with_contact(
|
||||
"Supplier2", "All Supplier Groups", "Supplier 2", "supplier2@gmail.com"
|
||||
)
|
||||
po1 = create_purchase_order(supplier="Supplier1")
|
||||
po2 = create_purchase_order(supplier="Supplier2")
|
||||
|
||||
create_custom_doctype()
|
||||
create_webform()
|
||||
create_order_assignment(supplier='Supplier1', po = po1.name)
|
||||
create_order_assignment(supplier='Supplier2', po = po2.name)
|
||||
create_order_assignment(supplier="Supplier1", po=po1.name)
|
||||
create_order_assignment(supplier="Supplier2", po=po2.name)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
# checking if data consist of all order assignment of Supplier1 and Supplier2
|
||||
self.assertTrue('Supplier1' and 'Supplier2' in [data.supplier for data in get_data()])
|
||||
self.assertTrue("Supplier1" and "Supplier2" in [data.supplier for data in get_data()])
|
||||
|
||||
frappe.set_user("supplier1@gmail.com")
|
||||
# checking if data only consist of order assignment of Supplier1
|
||||
self.assertTrue('Supplier1' in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != 'Supplier1'])
|
||||
self.assertTrue("Supplier1" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier1"])
|
||||
|
||||
frappe.set_user("supplier2@gmail.com")
|
||||
# checking if data only consist of order assignment of Supplier2
|
||||
self.assertTrue('Supplier2' in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != 'Supplier2'])
|
||||
self.assertTrue("Supplier2" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier2"])
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
|
||||
def get_data():
|
||||
webform_list_contexts = frappe.get_hooks('webform_list_context')
|
||||
webform_list_contexts = frappe.get_hooks("webform_list_context")
|
||||
if webform_list_contexts:
|
||||
context = frappe._dict(frappe.get_attr(webform_list_contexts[0])('Buying') or {})
|
||||
kwargs = dict(doctype='Order Assignment', order_by = 'modified desc')
|
||||
context = frappe._dict(frappe.get_attr(webform_list_contexts[0])("Buying") or {})
|
||||
kwargs = dict(doctype="Order Assignment", order_by="modified desc")
|
||||
return context.get_list(**kwargs)
|
||||
|
||||
|
||||
def create_user(name, email):
|
||||
frappe.get_doc({
|
||||
'doctype': 'User',
|
||||
'send_welcome_email': 0,
|
||||
'user_type': 'Website User',
|
||||
'first_name': name,
|
||||
'email': email,
|
||||
'roles': [{"doctype": "Has Role", "role": "Supplier"}]
|
||||
}).insert(ignore_if_duplicate = True)
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "User",
|
||||
"send_welcome_email": 0,
|
||||
"user_type": "Website User",
|
||||
"first_name": name,
|
||||
"email": email,
|
||||
"roles": [{"doctype": "Has Role", "role": "Supplier"}],
|
||||
}
|
||||
).insert(ignore_if_duplicate=True)
|
||||
|
||||
|
||||
def create_supplier_with_contact(name, group, contact_name, contact_email):
|
||||
supplier = frappe.get_doc({
|
||||
'doctype': 'Supplier',
|
||||
'supplier_name': name,
|
||||
'supplier_group': group
|
||||
}).insert(ignore_if_duplicate = True)
|
||||
supplier = frappe.get_doc(
|
||||
{"doctype": "Supplier", "supplier_name": name, "supplier_group": group}
|
||||
).insert(ignore_if_duplicate=True)
|
||||
|
||||
if not frappe.db.exists('Contact', contact_name+'-1-'+name):
|
||||
if not frappe.db.exists("Contact", contact_name + "-1-" + name):
|
||||
new_contact = frappe.new_doc("Contact")
|
||||
new_contact.first_name = contact_name
|
||||
new_contact.is_primary_contact = True,
|
||||
new_contact.append('links', {
|
||||
"link_doctype": "Supplier",
|
||||
"link_name": supplier.name
|
||||
})
|
||||
new_contact.append('email_ids', {
|
||||
"email_id": contact_email,
|
||||
"is_primary": 1
|
||||
})
|
||||
new_contact.is_primary_contact = (True,)
|
||||
new_contact.append("links", {"link_doctype": "Supplier", "link_name": supplier.name})
|
||||
new_contact.append("email_ids", {"email_id": contact_email, "is_primary": 1})
|
||||
|
||||
new_contact.insert(ignore_mandatory=True)
|
||||
|
||||
|
||||
def create_custom_doctype():
|
||||
frappe.get_doc({
|
||||
'doctype': 'DocType',
|
||||
'name': 'Order Assignment',
|
||||
'module': 'Buying',
|
||||
'custom': 1,
|
||||
'autoname': 'field:po',
|
||||
'fields': [
|
||||
{'label': 'PO', 'fieldname': 'po', 'fieldtype': 'Link', 'options': 'Purchase Order'},
|
||||
{'label': 'Supplier', 'fieldname': 'supplier', 'fieldtype': 'Data', "fetch_from": "po.supplier"}
|
||||
],
|
||||
'permissions': [
|
||||
{
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"read": 1,
|
||||
"role": "Supplier"
|
||||
}
|
||||
]
|
||||
}).insert(ignore_if_duplicate = True)
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "DocType",
|
||||
"name": "Order Assignment",
|
||||
"module": "Buying",
|
||||
"custom": 1,
|
||||
"autoname": "field:po",
|
||||
"fields": [
|
||||
{"label": "PO", "fieldname": "po", "fieldtype": "Link", "options": "Purchase Order"},
|
||||
{
|
||||
"label": "Supplier",
|
||||
"fieldname": "supplier",
|
||||
"fieldtype": "Data",
|
||||
"fetch_from": "po.supplier",
|
||||
},
|
||||
],
|
||||
"permissions": [
|
||||
{
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1,
|
||||
},
|
||||
{"read": 1, "role": "Supplier"},
|
||||
],
|
||||
}
|
||||
).insert(ignore_if_duplicate=True)
|
||||
|
||||
|
||||
def create_webform():
|
||||
frappe.get_doc({
|
||||
'doctype': 'Web Form',
|
||||
'module': 'Buying',
|
||||
'title': 'SO Schedule',
|
||||
'route': 'so-schedule',
|
||||
'doc_type': 'Order Assignment',
|
||||
'web_form_fields': [
|
||||
{
|
||||
'doctype': 'Web Form Field',
|
||||
'fieldname': 'po',
|
||||
'fieldtype': 'Link',
|
||||
'options': 'Purchase Order',
|
||||
'label': 'PO'
|
||||
},
|
||||
{
|
||||
'doctype': 'Web Form Field',
|
||||
'fieldname': 'supplier',
|
||||
'fieldtype': 'Data',
|
||||
'label': 'Supplier'
|
||||
}
|
||||
]
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Web Form",
|
||||
"module": "Buying",
|
||||
"title": "SO Schedule",
|
||||
"route": "so-schedule",
|
||||
"doc_type": "Order Assignment",
|
||||
"web_form_fields": [
|
||||
{
|
||||
"doctype": "Web Form Field",
|
||||
"fieldname": "po",
|
||||
"fieldtype": "Link",
|
||||
"options": "Purchase Order",
|
||||
"label": "PO",
|
||||
},
|
||||
{
|
||||
"doctype": "Web Form Field",
|
||||
"fieldname": "supplier",
|
||||
"fieldtype": "Data",
|
||||
"label": "Supplier",
|
||||
},
|
||||
],
|
||||
}
|
||||
).insert(ignore_if_duplicate=True)
|
||||
|
||||
}).insert(ignore_if_duplicate = True)
|
||||
|
||||
def create_order_assignment(supplier, po):
|
||||
frappe.get_doc({
|
||||
'doctype': 'Order Assignment',
|
||||
'po': po,
|
||||
'supplier': supplier,
|
||||
}).insert(ignore_if_duplicate = True)
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Order Assignment",
|
||||
"po": po,
|
||||
"supplier": supplier,
|
||||
}
|
||||
).insert(ignore_if_duplicate=True)
|
||||
|
||||
@@ -25,32 +25,126 @@ class TestWoocommerce(unittest.TestCase):
|
||||
woo_settings.save(ignore_permissions=True)
|
||||
|
||||
def test_sales_order_for_woocommerce(self):
|
||||
frappe.flags.woocomm_test_order_data = {"id":75,"parent_id":0,"number":"74","order_key":"wc_order_5aa1281c2dacb","created_via":"checkout","version":"3.3.3","status":"processing","currency":"INR","date_created":"2018-03-08T12:10:04","date_created_gmt":"2018-03-08T12:10:04","date_modified":"2018-03-08T12:10:04","date_modified_gmt":"2018-03-08T12:10:04","discount_total":"0.00","discount_tax":"0.00","shipping_total":"150.00","shipping_tax":"0.00","cart_tax":"0.00","total":"649.00","total_tax":"0.00","prices_include_tax":False,"customer_id":12,"customer_ip_address":"103.54.99.5","customer_user_agent":"mozilla\\/5.0 (x11; linux x86_64) applewebkit\\/537.36 (khtml, like gecko) chrome\\/64.0.3282.186 safari\\/537.36","customer_note":"","billing":{"first_name":"Tony","last_name":"Stark","company":"_Test Company","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN","email":"tony@gmail.com","phone":"123457890"},"shipping":{"first_name":"Tony","last_name":"Stark","company":"","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN"},"payment_method":"cod","payment_method_title":"Cash on delivery","transaction_id":"","date_paid":"","date_paid_gmt":"","date_completed":"","date_completed_gmt":"","cart_hash":"8e76b020d5790066496f244860c4703f","meta_data":[],"line_items":[{"id":80,"name":"Marvel","product_id":56,"variation_id":0,"quantity":1,"tax_class":"","subtotal":"499.00","subtotal_tax":"0.00","total":"499.00","total_tax":"0.00","taxes":[],"meta_data":[],"sku":"","price":499}],"tax_lines":[],"shipping_lines":[{"id":81,"method_title":"Flat rate","method_id":"flat_rate:1","total":"150.00","total_tax":"0.00","taxes":[],"meta_data":[{"id":623,"key":"Items","value":"Marvel × 1"}]}],"fee_lines":[],"coupon_lines":[],"refunds":[]}
|
||||
frappe.flags.woocomm_test_order_data = {
|
||||
"id": 75,
|
||||
"parent_id": 0,
|
||||
"number": "74",
|
||||
"order_key": "wc_order_5aa1281c2dacb",
|
||||
"created_via": "checkout",
|
||||
"version": "3.3.3",
|
||||
"status": "processing",
|
||||
"currency": "INR",
|
||||
"date_created": "2018-03-08T12:10:04",
|
||||
"date_created_gmt": "2018-03-08T12:10:04",
|
||||
"date_modified": "2018-03-08T12:10:04",
|
||||
"date_modified_gmt": "2018-03-08T12:10:04",
|
||||
"discount_total": "0.00",
|
||||
"discount_tax": "0.00",
|
||||
"shipping_total": "150.00",
|
||||
"shipping_tax": "0.00",
|
||||
"cart_tax": "0.00",
|
||||
"total": "649.00",
|
||||
"total_tax": "0.00",
|
||||
"prices_include_tax": False,
|
||||
"customer_id": 12,
|
||||
"customer_ip_address": "103.54.99.5",
|
||||
"customer_user_agent": "mozilla\\/5.0 (x11; linux x86_64) applewebkit\\/537.36 (khtml, like gecko) chrome\\/64.0.3282.186 safari\\/537.36",
|
||||
"customer_note": "",
|
||||
"billing": {
|
||||
"first_name": "Tony",
|
||||
"last_name": "Stark",
|
||||
"company": "_Test Company",
|
||||
"address_1": "Mumbai",
|
||||
"address_2": "",
|
||||
"city": "Dadar",
|
||||
"state": "MH",
|
||||
"postcode": "123",
|
||||
"country": "IN",
|
||||
"email": "tony@gmail.com",
|
||||
"phone": "123457890",
|
||||
},
|
||||
"shipping": {
|
||||
"first_name": "Tony",
|
||||
"last_name": "Stark",
|
||||
"company": "",
|
||||
"address_1": "Mumbai",
|
||||
"address_2": "",
|
||||
"city": "Dadar",
|
||||
"state": "MH",
|
||||
"postcode": "123",
|
||||
"country": "IN",
|
||||
},
|
||||
"payment_method": "cod",
|
||||
"payment_method_title": "Cash on delivery",
|
||||
"transaction_id": "",
|
||||
"date_paid": "",
|
||||
"date_paid_gmt": "",
|
||||
"date_completed": "",
|
||||
"date_completed_gmt": "",
|
||||
"cart_hash": "8e76b020d5790066496f244860c4703f",
|
||||
"meta_data": [],
|
||||
"line_items": [
|
||||
{
|
||||
"id": 80,
|
||||
"name": "Marvel",
|
||||
"product_id": 56,
|
||||
"variation_id": 0,
|
||||
"quantity": 1,
|
||||
"tax_class": "",
|
||||
"subtotal": "499.00",
|
||||
"subtotal_tax": "0.00",
|
||||
"total": "499.00",
|
||||
"total_tax": "0.00",
|
||||
"taxes": [],
|
||||
"meta_data": [],
|
||||
"sku": "",
|
||||
"price": 499,
|
||||
}
|
||||
],
|
||||
"tax_lines": [],
|
||||
"shipping_lines": [
|
||||
{
|
||||
"id": 81,
|
||||
"method_title": "Flat rate",
|
||||
"method_id": "flat_rate:1",
|
||||
"total": "150.00",
|
||||
"total_tax": "0.00",
|
||||
"taxes": [],
|
||||
"meta_data": [{"id": 623, "key": "Items", "value": "Marvel × 1"}],
|
||||
}
|
||||
],
|
||||
"fee_lines": [],
|
||||
"coupon_lines": [],
|
||||
"refunds": [],
|
||||
}
|
||||
order()
|
||||
|
||||
self.assertTrue(frappe.get_value("Customer",{"woocommerce_email":"tony@gmail.com"}))
|
||||
self.assertTrue(frappe.get_value("Item",{"woocommerce_id": 56}))
|
||||
self.assertTrue(frappe.get_value("Sales Order",{"woocommerce_id":75}))
|
||||
self.assertTrue(frappe.get_value("Customer", {"woocommerce_email": "tony@gmail.com"}))
|
||||
self.assertTrue(frappe.get_value("Item", {"woocommerce_id": 56}))
|
||||
self.assertTrue(frappe.get_value("Sales Order", {"woocommerce_id": 75}))
|
||||
frappe.flags.woocomm_test_order_data = {}
|
||||
|
||||
|
||||
def emulate_request():
|
||||
# Emulate Woocommerce Request
|
||||
headers = {
|
||||
"X-Wc-Webhook-Event":"created",
|
||||
"X-Wc-Webhook-Signature":"h1SjzQMPwd68MF5bficeFq20/RkQeRLsb9AVCUz/rLs="
|
||||
"X-Wc-Webhook-Event": "created",
|
||||
"X-Wc-Webhook-Signature": "h1SjzQMPwd68MF5bficeFq20/RkQeRLsb9AVCUz/rLs=",
|
||||
}
|
||||
# Emulate Request Data
|
||||
data = """{"id":74,"parent_id":0,"number":"74","order_key":"wc_order_5aa1281c2dacb","created_via":"checkout","version":"3.3.3","status":"processing","currency":"INR","date_created":"2018-03-08T12:10:04","date_created_gmt":"2018-03-08T12:10:04","date_modified":"2018-03-08T12:10:04","date_modified_gmt":"2018-03-08T12:10:04","discount_total":"0.00","discount_tax":"0.00","shipping_total":"150.00","shipping_tax":"0.00","cart_tax":"0.00","total":"649.00","total_tax":"0.00","prices_include_tax":false,"customer_id":12,"customer_ip_address":"103.54.99.5","customer_user_agent":"mozilla\\/5.0 (x11; linux x86_64) applewebkit\\/537.36 (khtml, like gecko) chrome\\/64.0.3282.186 safari\\/537.36","customer_note":"","billing":{"first_name":"Tony","last_name":"Stark","company":"Woocommerce","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN","email":"tony@gmail.com","phone":"123457890"},"shipping":{"first_name":"Tony","last_name":"Stark","company":"","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN"},"payment_method":"cod","payment_method_title":"Cash on delivery","transaction_id":"","date_paid":null,"date_paid_gmt":null,"date_completed":null,"date_completed_gmt":null,"cart_hash":"8e76b020d5790066496f244860c4703f","meta_data":[],"line_items":[{"id":80,"name":"Marvel","product_id":56,"variation_id":0,"quantity":1,"tax_class":"","subtotal":"499.00","subtotal_tax":"0.00","total":"499.00","total_tax":"0.00","taxes":[],"meta_data":[],"sku":"","price":499}],"tax_lines":[],"shipping_lines":[{"id":81,"method_title":"Flat rate","method_id":"flat_rate:1","total":"150.00","total_tax":"0.00","taxes":[],"meta_data":[{"id":623,"key":"Items","value":"Marvel × 1"}]}],"fee_lines":[],"coupon_lines":[],"refunds":[]}"""
|
||||
|
||||
# Build URL
|
||||
port = frappe.get_site_config().webserver_port or '8000'
|
||||
port = frappe.get_site_config().webserver_port or "8000"
|
||||
|
||||
if os.environ.get('CI'):
|
||||
host = 'localhost'
|
||||
if os.environ.get("CI"):
|
||||
host = "localhost"
|
||||
else:
|
||||
host = frappe.local.site
|
||||
|
||||
url = "http://{site}:{port}/api/method/erpnext.erpnext_integrations.connectors.woocommerce_connection.order".format(site=host, port=port)
|
||||
url = "http://{site}:{port}/api/method/erpnext.erpnext_integrations.connectors.woocommerce_connection.order".format(
|
||||
site=host, port=port
|
||||
)
|
||||
|
||||
r = requests.post(url=url, headers=headers, data=data)
|
||||
|
||||
|
||||
@@ -7,11 +7,14 @@ from frappe.www.printview import get_html_and_style
|
||||
|
||||
|
||||
class TestFormLoads(FrappeTestCase):
|
||||
|
||||
@change_settings("Print Settings", {"allow_print_for_cancelled": 1})
|
||||
def test_load(self):
|
||||
erpnext_modules = frappe.get_all("Module Def", filters={"app_name": "erpnext"}, pluck="name")
|
||||
doctypes = frappe.get_all("DocType", {"istable": 0, "issingle": 0, "is_virtual": 0, "module": ("in", erpnext_modules)}, pluck="name")
|
||||
doctypes = frappe.get_all(
|
||||
"DocType",
|
||||
{"istable": 0, "issingle": 0, "is_virtual": 0, "module": ("in", erpnext_modules)},
|
||||
pluck="name",
|
||||
)
|
||||
|
||||
for doctype in doctypes:
|
||||
last_doc = frappe.db.get_value(doctype, {}, "name", order_by="modified desc")
|
||||
@@ -23,7 +26,7 @@ class TestFormLoads(FrappeTestCase):
|
||||
|
||||
def assertFormLoad(self, doctype, docname):
|
||||
# reset previous response
|
||||
frappe.response = frappe._dict({"docs":[]})
|
||||
frappe.response = frappe._dict({"docs": []})
|
||||
frappe.response.docinfo = None
|
||||
|
||||
try:
|
||||
@@ -31,8 +34,12 @@ class TestFormLoads(FrappeTestCase):
|
||||
except Exception as e:
|
||||
self.fail(f"Failed to load {doctype}-{docname}: {e}")
|
||||
|
||||
self.assertTrue(frappe.response.docs, msg=f"expected document in reponse, found: {frappe.response.docs}")
|
||||
self.assertTrue(frappe.response.docinfo, msg=f"expected docinfo in reponse, found: {frappe.response.docinfo}")
|
||||
self.assertTrue(
|
||||
frappe.response.docs, msg=f"expected document in reponse, found: {frappe.response.docs}"
|
||||
)
|
||||
self.assertTrue(
|
||||
frappe.response.docinfo, msg=f"expected docinfo in reponse, found: {frappe.response.docinfo}"
|
||||
)
|
||||
|
||||
def assertDocPrint(self, doctype, docname):
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
@@ -44,9 +51,8 @@ class TestFormLoads(FrappeTestCase):
|
||||
messages_after = frappe.get_message_log()
|
||||
|
||||
if len(messages_after) > len(messages_before):
|
||||
new_messages = messages_after[len(messages_before):]
|
||||
self.fail("Print view showing error/warnings: \n"
|
||||
+ "\n".join(str(msg) for msg in new_messages))
|
||||
new_messages = messages_after[len(messages_before) :]
|
||||
self.fail("Print view showing error/warnings: \n" + "\n".join(str(msg) for msg in new_messages))
|
||||
|
||||
# html should exist
|
||||
self.assertTrue(bool(ret["html"]))
|
||||
|
||||
@@ -18,4 +18,4 @@ def create_records():
|
||||
gd.set("default_company", "Test Bulk")
|
||||
gd.save()
|
||||
frappe.clear_cache()
|
||||
create_so()
|
||||
create_so()
|
||||
|
||||
@@ -9,54 +9,67 @@ def create_employee_records():
|
||||
|
||||
frappe.db.sql("DELETE FROM tabEmployee WHERE company='Test Org Chart'")
|
||||
|
||||
emp1 = create_employee('Test Employee 1', 'CEO')
|
||||
emp2 = create_employee('Test Employee 2', 'CTO')
|
||||
emp3 = create_employee('Test Employee 3', 'Head of Marketing and Sales', emp1)
|
||||
emp4 = create_employee('Test Employee 4', 'Project Manager', emp2)
|
||||
emp5 = create_employee('Test Employee 5', 'Engineer', emp2)
|
||||
emp6 = create_employee('Test Employee 6', 'Analyst', emp3)
|
||||
emp7 = create_employee('Test Employee 7', 'Software Developer', emp4)
|
||||
emp1 = create_employee("Test Employee 1", "CEO")
|
||||
emp2 = create_employee("Test Employee 2", "CTO")
|
||||
emp3 = create_employee("Test Employee 3", "Head of Marketing and Sales", emp1)
|
||||
emp4 = create_employee("Test Employee 4", "Project Manager", emp2)
|
||||
emp5 = create_employee("Test Employee 5", "Engineer", emp2)
|
||||
emp6 = create_employee("Test Employee 6", "Analyst", emp3)
|
||||
emp7 = create_employee("Test Employee 7", "Software Developer", emp4)
|
||||
|
||||
employees = [emp1, emp2, emp3, emp4, emp5, emp6, emp7]
|
||||
return employees
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_employee_records():
|
||||
return frappe.db.get_list('Employee', filters={
|
||||
'company': 'Test Org Chart'
|
||||
}, pluck='name', order_by='name')
|
||||
return frappe.db.get_list(
|
||||
"Employee", filters={"company": "Test Org Chart"}, pluck="name", order_by="name"
|
||||
)
|
||||
|
||||
|
||||
def create_company():
|
||||
company = frappe.db.exists('Company', 'Test Org Chart')
|
||||
company = frappe.db.exists("Company", "Test Org Chart")
|
||||
if not company:
|
||||
company = frappe.get_doc({
|
||||
'doctype': 'Company',
|
||||
'company_name': 'Test Org Chart',
|
||||
'country': 'India',
|
||||
'default_currency': 'INR'
|
||||
}).insert().name
|
||||
company = (
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Company",
|
||||
"company_name": "Test Org Chart",
|
||||
"country": "India",
|
||||
"default_currency": "INR",
|
||||
}
|
||||
)
|
||||
.insert()
|
||||
.name
|
||||
)
|
||||
|
||||
return company
|
||||
|
||||
|
||||
def create_employee(first_name, designation, reports_to=None):
|
||||
employee = frappe.db.exists('Employee', {'first_name': first_name, 'designation': designation})
|
||||
employee = frappe.db.exists("Employee", {"first_name": first_name, "designation": designation})
|
||||
if not employee:
|
||||
employee = frappe.get_doc({
|
||||
'doctype': 'Employee',
|
||||
'first_name': first_name,
|
||||
'company': 'Test Org Chart',
|
||||
'gender': 'Female',
|
||||
'date_of_birth': getdate('08-12-1998'),
|
||||
'date_of_joining': getdate('01-01-2021'),
|
||||
'designation': designation,
|
||||
'reports_to': reports_to
|
||||
}).insert().name
|
||||
employee = (
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Employee",
|
||||
"first_name": first_name,
|
||||
"company": "Test Org Chart",
|
||||
"gender": "Female",
|
||||
"date_of_birth": getdate("08-12-1998"),
|
||||
"date_of_joining": getdate("01-01-2021"),
|
||||
"designation": designation,
|
||||
"reports_to": reports_to,
|
||||
}
|
||||
)
|
||||
.insert()
|
||||
.name
|
||||
)
|
||||
|
||||
return employee
|
||||
|
||||
|
||||
def create_missing_designation():
|
||||
if not frappe.db.exists('Designation', 'CTO'):
|
||||
frappe.get_doc({
|
||||
'doctype': 'Designation',
|
||||
'designation_name': 'CTO'
|
||||
}).insert()
|
||||
if not frappe.db.exists("Designation", "CTO"):
|
||||
frappe.get_doc({"doctype": "Designation", "designation_name": "CTO"}).insert()
|
||||
|
||||
@@ -9,83 +9,77 @@ from frappe.core.doctype.report.report import get_report_module_dotted_path
|
||||
ReportFilters = Dict[str, Any]
|
||||
ReportName = NewType("ReportName", str)
|
||||
|
||||
|
||||
def create_test_contact_and_address():
|
||||
frappe.db.sql('delete from tabContact')
|
||||
frappe.db.sql('delete from `tabContact Email`')
|
||||
frappe.db.sql('delete from `tabContact Phone`')
|
||||
frappe.db.sql('delete from tabAddress')
|
||||
frappe.db.sql('delete from `tabDynamic Link`')
|
||||
frappe.db.sql("delete from tabContact")
|
||||
frappe.db.sql("delete from `tabContact Email`")
|
||||
frappe.db.sql("delete from `tabContact Phone`")
|
||||
frappe.db.sql("delete from tabAddress")
|
||||
frappe.db.sql("delete from `tabDynamic Link`")
|
||||
|
||||
frappe.get_doc({
|
||||
"doctype": "Address",
|
||||
"address_title": "_Test Address for Customer",
|
||||
"address_type": "Office",
|
||||
"address_line1": "Station Road",
|
||||
"city": "_Test City",
|
||||
"state": "Test State",
|
||||
"country": "India",
|
||||
"links": [
|
||||
{
|
||||
"link_doctype": "Customer",
|
||||
"link_name": "_Test Customer"
|
||||
}
|
||||
]
|
||||
}).insert()
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Address",
|
||||
"address_title": "_Test Address for Customer",
|
||||
"address_type": "Office",
|
||||
"address_line1": "Station Road",
|
||||
"city": "_Test City",
|
||||
"state": "Test State",
|
||||
"country": "India",
|
||||
"links": [{"link_doctype": "Customer", "link_name": "_Test Customer"}],
|
||||
}
|
||||
).insert()
|
||||
|
||||
contact = frappe.get_doc({
|
||||
"doctype": 'Contact',
|
||||
"first_name": "_Test Contact for _Test Customer",
|
||||
"links": [
|
||||
{
|
||||
"link_doctype": "Customer",
|
||||
"link_name": "_Test Customer"
|
||||
}
|
||||
]
|
||||
})
|
||||
contact = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Contact",
|
||||
"first_name": "_Test Contact for _Test Customer",
|
||||
"links": [{"link_doctype": "Customer", "link_name": "_Test Customer"}],
|
||||
}
|
||||
)
|
||||
contact.add_email("test_contact_customer@example.com", is_primary=True)
|
||||
contact.add_phone("+91 0000000000", is_primary_phone=True)
|
||||
contact.insert()
|
||||
|
||||
contact_two = frappe.get_doc({
|
||||
"doctype": 'Contact',
|
||||
"first_name": "_Test Contact 2 for _Test Customer",
|
||||
"links": [
|
||||
{
|
||||
"link_doctype": "Customer",
|
||||
"link_name": "_Test Customer"
|
||||
}
|
||||
]
|
||||
})
|
||||
contact_two = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Contact",
|
||||
"first_name": "_Test Contact 2 for _Test Customer",
|
||||
"links": [{"link_doctype": "Customer", "link_name": "_Test Customer"}],
|
||||
}
|
||||
)
|
||||
contact_two.add_email("test_contact_two_customer@example.com", is_primary=True)
|
||||
contact_two.add_phone("+92 0000000000", is_primary_phone=True)
|
||||
contact_two.insert()
|
||||
|
||||
|
||||
def execute_script_report(
|
||||
report_name: ReportName,
|
||||
module: str,
|
||||
filters: ReportFilters,
|
||||
default_filters: Optional[ReportFilters] = None,
|
||||
optional_filters: Optional[ReportFilters] = None
|
||||
):
|
||||
report_name: ReportName,
|
||||
module: str,
|
||||
filters: ReportFilters,
|
||||
default_filters: Optional[ReportFilters] = None,
|
||||
optional_filters: Optional[ReportFilters] = None,
|
||||
):
|
||||
"""Util for testing execution of a report with specified filters.
|
||||
|
||||
Tests the execution of report with default_filters + filters.
|
||||
Tests the execution using optional_filters one at a time.
|
||||
|
||||
Args:
|
||||
report_name: Human readable name of report (unscrubbed)
|
||||
module: module to which report belongs to
|
||||
filters: specific values for filters
|
||||
default_filters: default values for filters such as company name.
|
||||
optional_filters: filters which should be tested one at a time in addition to default filters.
|
||||
report_name: Human readable name of report (unscrubbed)
|
||||
module: module to which report belongs to
|
||||
filters: specific values for filters
|
||||
default_filters: default values for filters such as company name.
|
||||
optional_filters: filters which should be tested one at a time in addition to default filters.
|
||||
"""
|
||||
|
||||
if default_filters is None:
|
||||
default_filters = {}
|
||||
|
||||
test_filters = []
|
||||
report_execute_fn = frappe.get_attr(get_report_module_dotted_path(module, report_name) + ".execute")
|
||||
report_execute_fn = frappe.get_attr(
|
||||
get_report_module_dotted_path(module, report_name) + ".execute"
|
||||
)
|
||||
report_filters = frappe._dict(default_filters).copy().update(filters)
|
||||
|
||||
test_filters.append(report_filters)
|
||||
|
||||
Reference in New Issue
Block a user