test: item-wh deduplication in reposting

This commit is contained in:
Ankush Menat 2021-11-02 18:03:43 +05:30 committed by Ankush Menat
parent 0d0e24a5f5
commit 55631dd0d6
2 changed files with 54 additions and 3 deletions

View File

@ -59,7 +59,7 @@ class RepostItemValuation(Document):
def on_submit(self):
self.deduplicate_similar_repost()
if not frappe.flags.in_test:
if not frappe.flags.in_test or self.flags.dont_run_in_test:
return
frappe.enqueue(repost, timeout=1800, queue='long',

View File

@ -74,8 +74,11 @@ class TestRepostItemValuation(unittest.TestCase):
)
def test_create_item_wise_repost_item_valuation_entries(self):
pr = make_purchase_receipt(company="_Test Company with perpetual inventory",
warehouse = "Stores - TCP1", get_multiple_items = True)
pr = make_purchase_receipt(
company="_Test Company with perpetual inventory",
warehouse="Stores - TCP1",
get_multiple_items=True,
)
rivs = create_item_wise_repost_entries(pr.doctype, pr.name)
self.assertGreaterEqual(len(rivs), 2)
@ -84,3 +87,51 @@ class TestRepostItemValuation(unittest.TestCase):
for riv in rivs:
self.assertEqual(riv.company, "_Test Company with perpetual inventory")
self.assertEqual(riv.warehouse, "Stores - TCP1")
def test_deduplication(self):
def _assert_status(doc, status):
doc.load_from_db()
self.assertEqual(doc.status, status)
riv_args = frappe._dict(
doctype="Repost Item Valuation",
item_code="_Test Item",
warehouse="_Test Warehouse - _TC",
based_on="Item and Warehouse",
voucher_type="Sales Invoice",
voucher_no="SI-1",
posting_date="2021-01-02",
posting_time="00:01:00",
)
# new repost without any duplicates
riv1 = frappe.get_doc(riv_args)
riv1.flags.dont_run_in_test = True
riv1.submit()
_assert_status(riv1, "Queued")
self.assertEqual(riv1.voucher_type, "Sales Invoice") # traceability
self.assertEqual(riv1.voucher_no, "SI-1")
# newer than existing duplicate - riv1
riv2 = frappe.get_doc(riv_args.update({"posting_date": "2021-01-03"}))
riv2.flags.dont_run_in_test = True
riv2.submit()
_assert_status(riv2, "Skipped")
# older than exisitng duplicate - riv1
riv3 = frappe.get_doc(riv_args.update({"posting_date": "2021-01-01"}))
riv3.flags.dont_run_in_test = True
riv3.submit()
_assert_status(riv3, "Queued")
_assert_status(riv1, "Skipped")
# unrelated reposts, shouldn't do anything to others.
riv4 = frappe.get_doc(riv_args.update({"warehouse": "Stores - _TC"}))
riv4.flags.dont_run_in_test = True
riv4.submit()
_assert_status(riv4, "Queued")
_assert_status(riv3, "Queued")
# to avoid breaking other tests accidentaly
riv4.set_status("Skipped")
riv3.set_status("Skipped")