diff --git a/product/ERP5/tests/testInventoryAPI.py b/product/ERP5/tests/testInventoryAPI.py index f1a28bf3c6f820b61b60dbaecfc5cf7140bc311e..cef869c305108ac0948f647e9e64c70c953e58f0 100644 --- a/product/ERP5/tests/testInventoryAPI.py +++ b/product/ERP5/tests/testInventoryAPI.py @@ -77,6 +77,10 @@ class InventoryAPITestCase(ERP5TypeTestCase): # for all those tests. return 'inventory_api_test' + def getItemModule(self): + """ the apparel fabric module """ + return getattr(self.getPortal(),'apparel_fabric_item_module') + def afterSetUp(self): """set up """ self.createCategories() @@ -105,6 +109,8 @@ class InventoryAPITestCase(ERP5TypeTestCase): self.other_resource = self.getCurrencyModule().newContent( title='Other Resource', portal_type='Currency') + self.item = self.getItemModule().newContent(title='Item') + self.other_item = self.getItemModule().newContent(title='Other Item') # create a dummy Rule, to be able to create simulation movements rule_tool = self.portal.portal_rules if not hasattr(rule_tool, 'default_order_rule'): @@ -178,8 +184,10 @@ class InventoryAPITestCase(ERP5TypeTestCase): ) + self.GROUP_CATEGORIES def getBusinessTemplateList(self): - """ erp5_trade is required for transit_simulation_state""" - return ('erp5_base', 'erp5_dummy_movement', 'erp5_trade') + """ erp5_trade is required for transit_simulation_state + erp5_apparel is required for item + """ + return ('erp5_base', 'erp5_dummy_movement', 'erp5_trade', 'erp5_apparel') # TODO: move this to a base class {{{ @reindex @@ -1374,12 +1382,61 @@ class TestInventoryStat(InventoryAPITestCase): destination_value=self.node) node_uid = self.node.getUid() makeMovement(quantity=1) + # Test the number of movement for this particular node self.assertEquals(getInventoryStat(node_uid=node_uid)[0].stock_uid, 1) makeMovement(quantity=3) self.assertEquals(getInventoryStat(node_uid=node_uid)[0].stock_uid, 2) makeMovement(quantity=5) self.assertEquals(getInventoryStat(node_uid=node_uid)[0].stock_uid, 3) +class TestTrackingList(InventoryAPITestCase): + """Tests Inventory Stat methods. + """ + def testNodeUid(self): + getTrackingList = self.getSimulationTool().getTrackingList + start_date = DateTime() + def makeMovement(aggregate=None): + self._makeMovement(quantity=1, price=1, + aggregate_value=aggregate, + resource_value=self.resource, + start_date = start_date, + source_value=self.other_node, + destination_value=self.node) + item_uid = self.item.getUid() + other_item_uid = self.other_item.getUid() + node_uid = self.node.getUid() + self.assertEquals(len(getTrackingList(node_uid=node_uid, + at_date=start_date)),0) + makeMovement(aggregate=self.item) + result = getTrackingList(node_uid=node_uid,at_date=start_date) + self.assertEquals(len(result),1) + self.failIfDifferentSet([x.uid for x in result], [item_uid]) + makeMovement(aggregate=self.other_item) + result = getTrackingList(node_uid=node_uid,at_date=start_date) + self.assertEquals(len(result),2) + self.failIfDifferentSet([x.uid for x in result], [item_uid, other_item_uid]) + + def testSeveralAggregateOnMovement(self): + getTrackingList = self.getSimulationTool().getTrackingList + start_date = DateTime() + def makeMovement(aggregate_list=None): + self._makeMovement(quantity=1, price=1, + aggregate_list=aggregate_list, + resource_value=self.resource, + start_date = start_date, + source_value=self.other_node, + destination_value=self.node) + item_uid = self.item.getUid() + other_item_uid = self.other_item.getUid() + node_uid = self.node.getUid() + self.assertEquals(len(getTrackingList(node_uid=node_uid, + at_date=start_date)),0) + makeMovement(aggregate_list=[self.item.getRelativeUrl(), + self.other_item.getRelativeUrl()]) + result = getTrackingList(node_uid=node_uid,at_date=start_date) + self.assertEquals(len(result),2) + self.failIfDifferentSet([x.uid for x in result], [item_uid, other_item_uid]) + if __name__ == '__main__': framework() @@ -1393,6 +1450,7 @@ else: suite.addTest(unittest.makeSuite(TestInventoryStat)) suite.addTest(unittest.makeSuite(TestNextNegativeInventoryDate)) suite.addTest(unittest.makeSuite(TestInventoryStat)) + suite.addTest(unittest.makeSuite(TestTrackingList)) return suite # vim: foldmethod=marker