test: Test include_descendants in Item Group Product Listing

- Also made include_descendants field's visibility dependant on show_in_website
This commit is contained in:
marination 2022-03-09 12:24:57 +05:30
parent ee43f83ff8
commit 3507cf5985
3 changed files with 49 additions and 7 deletions

View File

@ -13,8 +13,7 @@ test_dependencies = ["Item", "Item Group"]
class TestItemGroupProductDataEngine(unittest.TestCase): class TestItemGroupProductDataEngine(unittest.TestCase):
"Test Products & Sub-Category Querying for Product Listing on Item Group Page." "Test Products & Sub-Category Querying for Product Listing on Item Group Page."
@classmethod def setUp(self):
def setUpClass(cls):
item_codes = [ item_codes = [
("Test Mobile A", "_Test Item Group B"), ("Test Mobile A", "_Test Item Group B"),
("Test Mobile B", "_Test Item Group B"), ("Test Mobile B", "_Test Item Group B"),
@ -28,8 +27,10 @@ class TestItemGroupProductDataEngine(unittest.TestCase):
if not frappe.db.exists("Website Item", {"item_code": item_code}): if not frappe.db.exists("Website Item", {"item_code": item_code}):
create_regular_web_item(item_code, item_args=item_args) create_regular_web_item(item_code, item_args=item_args)
@classmethod frappe.db.set_value("Item Group", "_Test Item Group B - 1", "show_in_website", 1)
def tearDownClass(cls): frappe.db.set_value("Item Group", "_Test Item Group B - 2", "show_in_website", 1)
def tearDown(self):
frappe.db.rollback() frappe.db.rollback()
def test_product_listing_in_item_group(self): def test_product_listing_in_item_group(self):
@ -87,7 +88,6 @@ class TestItemGroupProductDataEngine(unittest.TestCase):
def test_item_group_with_sub_groups(self): def test_item_group_with_sub_groups(self):
"Test Valid Sub Item Groups in Item Group Page." "Test Valid Sub Item Groups in Item Group Page."
frappe.db.set_value("Item Group", "_Test Item Group B - 1", "show_in_website", 1)
frappe.db.set_value("Item Group", "_Test Item Group B - 2", "show_in_website", 0) frappe.db.set_value("Item Group", "_Test Item Group B - 2", "show_in_website", 0)
result = get_product_filter_data(query_args={ result = get_product_filter_data(query_args={
@ -114,4 +114,45 @@ class TestItemGroupProductDataEngine(unittest.TestCase):
# check if child group is fetched if shown in website # check if child group is fetched if shown in website
self.assertIn("_Test Item Group B - 1", child_groups) self.assertIn("_Test Item Group B - 1", child_groups)
self.assertIn("_Test Item Group B - 2", child_groups) self.assertIn("_Test Item Group B - 2", child_groups)
def test_item_group_page_with_descendants_included(self):
"""
Test if 'include_descendants' pulls Items belonging to descendant Item Groups (Level 2 & 3).
> _Test Item Group B [Level 1]
> _Test Item Group B - 1 [Level 2]
> _Test Item Group B - 1 - 1 [Level 3]
"""
frappe.get_doc({ # create Level 3 nested child group
"doctype": "Item Group",
"is_group": 1,
"item_group_name": "_Test Item Group B - 1 - 1",
"parent_item_group": "_Test Item Group B - 1"
}).insert()
create_regular_web_item( # create an item belonging to level 3 item group
"Test Mobile F",
item_args={"item_group": "_Test Item Group B - 1 - 1"}
)
frappe.db.set_value("Item Group", "_Test Item Group B - 1 - 1", "show_in_website", 1)
# enable 'include descendants' in Level 1
frappe.db.set_value("Item Group", "_Test Item Group B", "include_descendants", 1)
result = get_product_filter_data(query_args={
"field_filters": {},
"attribute_filters": {},
"start": 0,
"item_group": "_Test Item Group B"
})
items = result.get("items")
item_codes = [item.get("item_code") for item in items]
# check if all sub groups' items are pulled
self.assertEqual(len(items), 6)
self.assertIn("Test Mobile A", item_codes)
self.assertIn("Test Mobile C", item_codes)
self.assertIn("Test Mobile E", item_codes)
self.assertIn("Test Mobile F", item_codes)

View File

@ -219,6 +219,7 @@
}, },
{ {
"default": "0", "default": "0",
"depends_on": "show_in_website",
"description": "Include Website Items belonging to child Item Groups", "description": "Include Website Items belonging to child Item Groups",
"fieldname": "include_descendants", "fieldname": "include_descendants",
"fieldtype": "Check", "fieldtype": "Check",
@ -231,7 +232,7 @@
"is_tree": 1, "is_tree": 1,
"links": [], "links": [],
"max_attachments": 3, "max_attachments": 3,
"modified": "2022-03-07 09:44:47.561532", "modified": "2022-03-09 12:27:11.055782",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Setup", "module": "Setup",
"name": "Item Group", "name": "Item Group",