Merge pull request #44958 from ruthra-kumar/fix_test_data_issue_on_manufacturing

refactor(test): make manufacturing test idempotent
This commit is contained in:
ruthra kumar
2024-12-30 11:29:58 +05:30
committed by GitHub

View File

@@ -5,19 +5,30 @@ from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ReportFilters, ReportName, execute_script_report from erpnext.tests.utils import ReportFilters, ReportName, execute_script_report
DEFAULT_FILTERS = { EXTRA_TEST_RECORD_DEPENDENCIES = ["BOM", "Item Price", "Warehouse"]
class TestManufacturingReports(IntegrationTestCase):
def setUp(self):
self.setup_default_filters()
def tearDown(self):
frappe.db.rollback()
def setup_default_filters(self):
self.last_bom = frappe.get_last_doc("BOM").name
self.DEFAULT_FILTERS = {
"company": "_Test Company", "company": "_Test Company",
"from_date": "2010-01-01", "from_date": "2010-01-01",
"to_date": "2030-01-01", "to_date": "2030-01-01",
"warehouse": "_Test Warehouse - _TC", "warehouse": "_Test Warehouse - _TC",
} }
self.REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [
REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ ("BOM Explorer", {"bom": self.last_bom}),
("BOM Explorer", {"bom": frappe.get_last_doc("BOM").name}),
("BOM Operations Time", {}), ("BOM Operations Time", {}),
("BOM Stock Calculated", {"bom": frappe.get_last_doc("BOM").name, "qty_to_make": 2}), ("BOM Stock Calculated", {"bom": self.last_bom, "qty_to_make": 2}),
("BOM Stock Report", {"bom": frappe.get_last_doc("BOM").name, "qty_to_produce": 2}), ("BOM Stock Report", {"bom": self.last_bom, "qty_to_produce": 2}),
("Cost of Poor Quality Report", {"item": "_Test Item", "serial_no": "00"}), ("Cost of Poor Quality Report", {"item": "_Test Item", "serial_no": "00"}),
("Downtime Analysis", {}), ("Downtime Analysis", {}),
( (
@@ -38,28 +49,25 @@ REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [
("Work Order Summary", {"fiscal_year": "2021-2022", "age": 0}), ("Work Order Summary", {"fiscal_year": "2021-2022", "age": 0}),
] ]
if frappe.db.a_row_exists("Production Plan"): if frappe.db.a_row_exists("Production Plan"):
REPORT_FILTER_TEST_CASES.append( self.REPORT_FILTER_TEST_CASES.append(
("Production Plan Summary", {"production_plan": frappe.get_last_doc("Production Plan").name}) ("Production Plan Summary", {"production_plan": frappe.get_last_doc("Production Plan").name})
) )
OPTIONAL_FILTERS = { self.OPTIONAL_FILTERS = {
"warehouse": "_Test Warehouse - _TC", "warehouse": "_Test Warehouse - _TC",
"item": "_Test Item", "item": "_Test Item",
"item_group": "_Test Item Group", "item_group": "_Test Item Group",
} }
class TestManufacturingReports(IntegrationTestCase):
def test_execute_all_manufacturing_reports(self): def test_execute_all_manufacturing_reports(self):
"""Test that all script report in manufacturing modules are executable with supported filters""" """Test that all script report in manufacturing modules are executable with supported filters"""
for report, filter in REPORT_FILTER_TEST_CASES: for report, filter in self.REPORT_FILTER_TEST_CASES:
with self.subTest(report=report): with self.subTest(report=report):
execute_script_report( execute_script_report(
report_name=report, report_name=report,
module="Manufacturing", module="Manufacturing",
filters=filter, filters=filter,
default_filters=DEFAULT_FILTERS, default_filters=self.DEFAULT_FILTERS,
optional_filters=OPTIONAL_FILTERS if filter.get("_optional") else None, optional_filters=self.OPTIONAL_FILTERS if filter.get("_optional") else None,
) )