test: auto serial fetching
This commit is contained in:
parent
4f8bb91eae
commit
b9eec331e3
@ -6,10 +6,12 @@
|
|||||||
|
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.tests.utils import FrappeTestCase
|
||||||
|
|
||||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
from erpnext.stock.doctype.item.test_item import make_item
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
||||||
|
from erpnext.stock.doctype.serial_no.serial_no import *
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||||
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
|
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
|
||||||
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
|
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
|
||||||
@ -18,9 +20,6 @@ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
|||||||
test_dependencies = ["Item"]
|
test_dependencies = ["Item"]
|
||||||
test_records = frappe.get_test_records('Serial No')
|
test_records = frappe.get_test_records('Serial No')
|
||||||
|
|
||||||
from frappe.tests.utils import FrappeTestCase
|
|
||||||
|
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import *
|
|
||||||
|
|
||||||
|
|
||||||
class TestSerialNo(FrappeTestCase):
|
class TestSerialNo(FrappeTestCase):
|
||||||
@ -242,3 +241,48 @@ class TestSerialNo(FrappeTestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(value_diff, -113)
|
self.assertEqual(value_diff, -113)
|
||||||
|
|
||||||
|
def test_auto_fetch(self):
|
||||||
|
item_code = make_item(properties={
|
||||||
|
"has_serial_no": 1,
|
||||||
|
"has_batch_no": 1,
|
||||||
|
"create_new_batch": 1,
|
||||||
|
"serial_no_series": "TEST.#######"
|
||||||
|
}).name
|
||||||
|
warehouse = "_Test Warehouse - _TC"
|
||||||
|
|
||||||
|
in1 = make_stock_entry(item_code=item_code, to_warehouse=warehouse, qty=5)
|
||||||
|
in2 = make_stock_entry(item_code=item_code, to_warehouse=warehouse, qty=5)
|
||||||
|
|
||||||
|
in1.reload()
|
||||||
|
in2.reload()
|
||||||
|
|
||||||
|
batch_wise_serials = {
|
||||||
|
in1.items[0].batch_no: get_serial_nos(in1.items[0].serial_no),
|
||||||
|
in2.items[0].batch_no: get_serial_nos(in2.items[0].serial_no)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test FIFO
|
||||||
|
first_fetch = auto_fetch_serial_number(5, item_code, warehouse)
|
||||||
|
self.assertEqual(first_fetch, batch_wise_serials[in1.items[0].batch_no])
|
||||||
|
|
||||||
|
# partial FIFO
|
||||||
|
partial_fetch = auto_fetch_serial_number(2, item_code, warehouse)
|
||||||
|
self.assertTrue(set(partial_fetch).issubset(set(first_fetch)),
|
||||||
|
msg=f"{partial_fetch} should be subset of {first_fetch}")
|
||||||
|
|
||||||
|
# exclusion
|
||||||
|
remaining = auto_fetch_serial_number(3, item_code, warehouse, exclude_sr_nos=partial_fetch)
|
||||||
|
self.assertEqual(sorted(remaining + partial_fetch), first_fetch)
|
||||||
|
|
||||||
|
# batchwise
|
||||||
|
for batch, expected_serials in batch_wise_serials.items():
|
||||||
|
fetched_sr = auto_fetch_serial_number(5, item_code, warehouse, batch_nos=batch)
|
||||||
|
self.assertEqual(fetched_sr, sorted(expected_serials))
|
||||||
|
|
||||||
|
# non existing warehouse
|
||||||
|
self.assertEqual(auto_fetch_serial_number(10, item_code, warehouse="Nonexisting"), [])
|
||||||
|
|
||||||
|
# multi batch
|
||||||
|
all_serials = [sr for sr_list in batch_wise_serials.values() for sr in sr_list]
|
||||||
|
fetched_serials = auto_fetch_serial_number(10, item_code, warehouse, batch_nos=list(batch_wise_serials.keys()))
|
||||||
|
self.assertEqual(sorted(all_serials), fetched_serials)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user