From f948fea3bf81feef81742fb418d96491c1690890 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Mon, 27 Jul 2015 18:01:49 +0530 Subject: [PATCH] simulate added to make_time_log in test_time_log --- .../production_order/test_production_order.py | 30 ++++++------------- .../doctype/time_log/test_time_log.py | 29 ++++++++++-------- .../time_log_batch/test_time_log_batch.py | 2 +- 3 files changed, 26 insertions(+), 35 deletions(-) diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py index 838ef38baf..4d653375cb 100644 --- a/erpnext/manufacturing/doctype/production_order/test_production_order.py +++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py @@ -5,10 +5,10 @@ from __future__ import unicode_literals import unittest import frappe -from frappe.utils import flt, get_datetime, time_diff_in_hours, now, add_days +from frappe.utils import flt, time_diff_in_hours, now, add_days from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory from erpnext.manufacturing.doctype.production_order.production_order \ - import make_stock_entry, make_time_log, ProductionNotApplicableError,ItemHasVariantError + import make_stock_entry, ProductionNotApplicableError,ItemHasVariantError from erpnext.stock.doctype.stock_entry import test_stock_entry from erpnext.projects.doctype.time_log.time_log import OverProductionLoggedError @@ -68,6 +68,7 @@ class TestProductionOrder(unittest.TestCase): self.assertRaises(StockOverProductionError, s.submit) def test_make_time_log(self): + from erpnext.projects.doctype.time_log.test_time_log import make_time_log_test_record prod_order = make_prod_order_test_record(item="_Test FG Item 2", planned_start_date=now(), qty=1, do_not_save=True) @@ -79,17 +80,13 @@ class TestProductionOrder(unittest.TestCase): d.completed_qty = flt(d.completed_qty) - time_log = make_time_log(prod_order.name, d.operation, \ - d.planned_start_time, d.planned_end_time, prod_order.qty - d.completed_qty, - operation_id=d.name) + time_log = make_time_log_test_record(hours=1, production_order= prod_order.name, operation= d.operation, + completed_qty= prod_order.qty - d.completed_qty, operation_id=d.name, for_manufacturing=1, simulate=True) self.assertEqual(prod_order.name, time_log.production_order) self.assertEqual((prod_order.qty - d.completed_qty), time_log.completed_qty) self.assertEqual(time_diff_in_hours(d.planned_end_time, d.planned_start_time),time_log.hours) - - time_log.save() - time_log.submit() - + manufacturing_settings = frappe.get_doc({ "doctype": "Manufacturing Settings", "allow_production_on_holidays": 0 @@ -101,11 +98,6 @@ class TestProductionOrder(unittest.TestCase): self.assertEqual(prod_order.operations[0].status, "Completed") self.assertEqual(prod_order.operations[0].completed_qty, prod_order.qty) - self.assertEqual(get_datetime(prod_order.operations[0].actual_start_time), - get_datetime(time_log.from_time)) - self.assertEqual(get_datetime(prod_order.operations[0].actual_end_time), - get_datetime(time_log.to_time)) - self.assertEqual(prod_order.operations[0].actual_operation_time, 60) self.assertEqual(prod_order.operations[0].actual_operating_cost, 100) @@ -118,13 +110,9 @@ class TestProductionOrder(unittest.TestCase): self.assertEqual(flt(prod_order.operations[0].actual_operation_time), 0) self.assertEqual(flt(prod_order.operations[0].actual_operating_cost), 0) - time_log2 = frappe.copy_doc(time_log) - time_log2.update({ - "completed_qty": 10, - "from_time": now(), - "to_time": add_days(now(), 1), - "docstatus": 0 - }) + time_log2 = make_time_log_test_record(from_time= add_days(time_log.to_time, 1) ,production_order= prod_order.name, operation= d.operation, + completed_qty= 5, operation_id=d.name, for_manufacturing=1, do_not_save=True) + self.assertRaises(OverProductionLoggedError, time_log2.save) def test_planned_operating_cost(self): diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py index c9cc51e518..9bdf5886f7 100644 --- a/erpnext/projects/doctype/time_log/test_time_log.py +++ b/erpnext/projects/doctype/time_log/test_time_log.py @@ -14,15 +14,12 @@ from erpnext.manufacturing.doctype.production_order.test_production_order import class TestTimeLog(unittest.TestCase): def test_duplication(self): - date = now_datetime() - tl1 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002", - from_time= date, to_time= date + datetime.timedelta(seconds=1)) + tl1 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002", simulate= True) tl2 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002", - from_time= date, to_time= date + datetime.timedelta(seconds=1), do_not_save= 1) + from_time= tl1.from_time, to_time= tl1.to_time, do_not_save= 1) self.assertRaises(OverlapError, tl2.insert) - tl1.cancel() def test_production_order_status(self): prod_order = make_prod_order_test_record(item= "_Test FG Item 2", qty= 1, do_not_submit= True) @@ -30,7 +27,7 @@ class TestTimeLog(unittest.TestCase): prod_order.save() time_log = make_time_log_test_record(for_manufacturing= 1, production_order= prod_order.name, qty= 1, - employee= "_T-Employee-0003", do_not_save= True) + employee= "_T-Employee-0003", do_not_save= True, simulate=1) self.assertRaises(NotSubmittedError, time_log.save) @@ -114,11 +111,8 @@ def make_time_log_test_record(**args): time_log = frappe.new_doc("Time Log") time_log.from_time = args.from_time or now_datetime() - time_log.to_time = args.to_time or time_log.from_time + datetime.timedelta(seconds=1) - - if args.hours>0: - time_log.hours = args.hours - time_log.to_time = time_log.from_time + datetime.timedelta(hours= args.hours) + time_log.hours = args.hours or 1 + time_log.to_time = args.to_time or time_log.from_time + datetime.timedelta(hours= time_log.hours) time_log.project = args.project time_log.task = args.task @@ -127,14 +121,23 @@ def make_time_log_test_record(**args): time_log.operation = args.operation time_log.operation_id = args.operation_id time_log.workstation = args.workstation - time_log.qty = args.qty or 1 + time_log.completed_qty = args.completed_qty time_log.activity_type = args.activity_type or "_Test Activity Type" time_log.billable = args.billable or 1 time_log.employee = args.employee time_log.user = args.user if not args.do_not_save: - time_log.insert() + if args.simulate: + while True: + try: + time_log.save() + break + except OverlapError: + time_log.from_time = time_log.from_time + datetime.timedelta(minutes=10) + time_log.to_time = time_log.from_time + datetime.timedelta(hours= time_log.hours) + else: + time_log.save() if not args.do_not_submit: time_log.submit() diff --git a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py index 1166c768b1..9f3591d761 100644 --- a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py +++ b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py @@ -7,7 +7,7 @@ from erpnext.projects.doctype.time_log.test_time_log import make_time_log_test_r class TimeLogBatchTest(unittest.TestCase): def test_time_log_status(self): - time_log = make_time_log_test_record(employee= "_T-Employee-0002") + time_log = make_time_log_test_record(simulate=True) self.assertEquals(frappe.db.get_value("Time Log", time_log.name, "status"), "Submitted")