def test_revise_order_build_confirmation(self): from objects import Shift, Delivery, Order, Tip from processes.revise import Revise_Order from utility.utility import now # id order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '1' test.build_confirmation() # tip order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '2' test.build_confirmation() # distance order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '3' test.build_confirmation() # end time order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = '4' test.build_confirmation() # save order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.user_selection = 's' test.build_confirmation()
def test_revise_delivery_build_confirmation(self): from processes.revise import Revise_Delivery from objects import Shift, Delivery, Order from utility.utility import now delivery = Delivery(Shift(now().date())) test = Revise_Delivery(delivery, test=True)
def test_load_carry_out_tips(self): from objects import Shift from os import path, remove from processes.load import load_carry_out_tips from utility.utility import now shift = Shift(now().date()) file_list = self.shift.file_list() # create file with open(file_list['tips'], 'w') as carry_out_tips_file: carry_out_tips_file.write( '3.11,0.0,0.0\n'\ '0.0,2.71,0.0') # check file exists and baseline self.assertTrue(path.exists(file_list['tips'])) self.assertTrue(len(shift.carry_out_tips) == 0) # run function shift = load_carry_out_tips(shift) # check data was loaded correctly self.assertTrue(len(shift.carry_out_tips) > 0) self.assertEqual(shift.carry_out_tips[0].total_amount(), self.shift.carry_out_tips[0].total_amount()) self.assertEqual(shift.carry_out_tips[1].total_amount(), self.shift.carry_out_tips[1].total_amount()) self.assertEqual(shift.carry_out_tips[0].csv(), self.shift.carry_out_tips[0].csv()) self.assertEqual(shift.carry_out_tips[1].csv(), self.shift.carry_out_tips[1].csv()) # delete files remove(file_list['tips'])
def test_view_order_main(self): from datetime import datetime from objects import Shift, Delivery, Order, Tip from processes.view import view_order from utility.utility import now, To_Datetime # no data entered order = Order(Delivery(Shift(now().date())), 123) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tTotal tip: $0.00\n' self.assertEqual(test, expected) # card order.tip = Tip(3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tCard tip: $3.97\n' self.assertEqual(test, expected) # cash order.tip = Tip(cash=3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tCash tip: $3.97\n' self.assertEqual(test, expected) # card and cash order.tip = Tip(3, 2) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tTotal tip: $5.00\n'\ '\tCard tip: $3.00\n'\ '\tCash tip: $2.00\n' self.assertEqual(test, expected) # unknown order.tip = Tip(unknown=3.97) test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n' self.assertEqual(test, expected) # distance order.miles_traveled = 3.9 test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n'\ '\tDistance to address: 3.9 miles\n' self.assertEqual(test, expected) # end time order.end_time = datetime.strptime('15:27:42', '%H:%M:%S') test = view_order(order) expected = 'Order I.D. #: 123\n'\ '\tUnknown tip: $3.97\n'\ '\tDistance to address: 3.9 miles\n'\ '\tCompleted at: 03:27:42 PM\n' self.assertEqual(test, expected)
def test_load_shift_completed(self): from objects import Shift from os import path, remove from processes.load import load_shift from utility.utility import now shift = Shift(now().date()) file_list = self.shift.file_list() # create file with open(file_list['info'], 'w') as shift_file: shift_file.write(self.shift.csv()) # check file was created and baseline self.assertTrue(path.exists(file_list['info'])) self.assertNotEqual(shift.miles_traveled, self.shift.miles_traveled) self.assertNotEqual(shift.fuel_economy, self.shift.fuel_economy) self.assertNotEqual(shift.vehicle_compensation, self.shift.vehicle_compensation) self.assertNotEqual(shift.device_compensation, self.shift.device_compensation) self.assertNotEqual(shift.extra_tips_claimed, self.shift.extra_tips_claimed) self.assertNotEqual(shift.total_hours, self.shift.total_hours) self.assertNotEqual(shift.start_time, self.shift.start_time) self.assertNotEqual(shift.end_time, self.shift.end_time) # run function shift = load_shift(shift) # check that data was loaded correctly self.assertEqual(shift.miles_traveled, self.shift.miles_traveled) self.assertEqual(shift.fuel_economy, self.shift.fuel_economy) self.assertEqual(shift.vehicle_compensation, self.shift.vehicle_compensation) self.assertEqual(shift.device_compensation, self.shift.device_compensation) self.assertEqual(shift.extra_tips_claimed, self.shift.extra_tips_claimed) self.assertEqual(shift.total_hours, self.shift.total_hours) self.assertEqual(shift.start_time, self.shift.start_time) self.assertEqual(shift.end_time, self.shift.end_time) # delete file remove(file_list['info'])
def test_revise_order_build_prompt(self): from objects import Shift, Delivery, Order, Tip from processes.revise import Revise_Order from utility.utility import now order = Order(Delivery(Shift(now().date()))) test = Revise_Order(order, test=True) test.build_prompt() expected =\ '\n- Revise Order -\n'\ '1. Add/edit I.D.\n'\ '2. Add/edit tip\n'\ '3. Add/edit miles traveled\n'\ '4. Add/edit end time\n'\ 'V. View current order values\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected)
def overwrite_shift(self): from objects import Shift from os import mkdir from shutil import rmtree from utility.file import write from utility.utility import now self.shift = Shift(now().date()) # delete directory that contains all files rmtree(self.shift.file_list()['directory']) # recreate the directory to store new files mkdir(self.shift.file_list()['directory']) # set and save start time self.shift.set_start_time() write(self.shift.start_time, self.shift.file_list()['start_time']) # remove id from completed ids file self.shift.remove_id_from_file() return self
def resume_shift(self): from objects import Shift from os import remove from utility.file import write from utility.utility import now self.shift = Shift(now().date()) # load completed shift data self.shift.load_completed() # get shift start time start_time = self.shift.start_time # delete shift info file remove(self.shift.file_list()['info']) # save start time write(start_time, self.shift.file_list()['start_time']) # remove id from completed ids file self.shift.remove_id_from_file() # load current shift data self.shift.load_current() return self
def setUp(self): import objects from utility.utility import To_Datetime from utility.utility import now self.shift = objects.Shift(now().date()) self.miles_traveled = 12.3 self.fuel_economy = 21.2 self.vehicle_compensation = 13.07 self.device_compensation = .27 self.extra_tips_claimed = 3.0 self.total_hours = 9.7 self.start_time = To_Datetime('2020-07-13 09:00:00.000').from_datetime() self.end_time = To_Datetime('2020-07-13 18:30:00.000').from_datetime() self.delivery_1 = objects.Delivery(self.shift, 0) self.delivery_2 = objects.Delivery(self.shift, 1) self.delivery_3 = objects.Delivery(self.shift, 2) self.order_1 = objects.Order(self.delivery_1, 5) self.order_2 = objects.Order(self.delivery_2, 10) self.order_3 = objects.Order(self.delivery_3, 16) self.order_4 = objects.Order(self.delivery_3, 22)
def completed_shift(): import objects from utility.utility import To_Datetime from utility.utility import now # shift shift = objects.Shift(now().date()) shift.miles_traveled = 12.3 shift.fuel_economy = 21.2 shift.vehicle_compensation = 13.07 shift.device_compensation = .27 shift.extra_tips_claimed = 3.0 shift.total_hours = 9.7 shift.start_time =\ To_Datetime('2020-07-13 09:00:00.100').from_datetime() shift.end_time =\ To_Datetime('2020-07-13 18:30:00.100').from_datetime() shift.carry_out_tips = [objects.Tip(card=3.11), objects.Tip(cash=2.71)] # delivery 1 delivery_1 = objects.Delivery(shift, 0) delivery_1.start_time =\ To_Datetime('2020-07-13 10:30:00.100').from_datetime() delivery_1.end_time =\ To_Datetime('2020-07-13 10:55:00.100').from_datetime() delivery_1.miles_traveled = 3.7 delivery_1.average_speed = 21 # order order_1 = objects.Order(delivery_1, 7) order_1.end_time =\ To_Datetime('2020-07-13 10:43:00.100').from_datetime() order_1.miles_traveled = 1.8 order_1.tip = objects.Tip(cash=5) # add order to delivery delivery_1.order_ids.append(order_1.id) delivery_1.orders.append(order_1) # add delivery to shift shift.delivery_ids.append(delivery_1.id) shift.deliveries.append(delivery_1) # delivery 2 delivery_2 = objects.Delivery(shift, 1) delivery_2.start_time =\ To_Datetime('2020-07-13 11:20:00.100').from_datetime() delivery_2.end_time =\ To_Datetime('2020-07-13 11:47:00.100').from_datetime() delivery_2.miles_traveled = .7 delivery_2.average_speed = 14 # order order_2 = objects.Order(delivery_2, 36) order_2.end_time =\ To_Datetime('2020-07-13 11:31:00.100').from_datetime() order_2.miles_traveled = 3.1 order_2.tip = objects.Tip() # add order to delivery delivery_2.order_ids.append(order_2.id) delivery_2.orders.append(order_2) # extra stop extra_stop_2 = objects.Extra_Stop(delivery_2, 1) extra_stop_2.location = 'mongolian grill' extra_stop_2.reason = 'trade food' extra_stop_2.miles_traveled = 4.1 extra_stop_2.end_time =\ To_Datetime('2020-08-25 13:27:57.100').from_datetime() delivery_2.extra_stop_ids.append(extra_stop_2.id) delivery_2.extra_stops.append(extra_stop_2) # add delivery to shift shift.delivery_ids.append(delivery_2.id) shift.deliveries.append(delivery_2) # delivery 3 delivery_3 = objects.Delivery(shift, 2) delivery_3.start_time =\ To_Datetime('2020-07-13 12:12:00.100').from_datetime() delivery_3.end_time =\ To_Datetime('2020-07-13 12:41:00.100').from_datetime() delivery_3.miles_traveled = 6.7 delivery_3.average_speed = 23 # order 1 order_3 = objects.Order(delivery_3, 47) order_3.end_time =\ To_Datetime('2020-07-13 12:28:00.100').from_datetime() order_3.miles_traveled = 3.4 order_3.tip = objects.Tip(card=2.78) # add order to delivery delivery_3.order_ids.append(order_3.id) delivery_3.orders.append(order_3) # order 2 order_4 = objects.Order(delivery_3, 58) order_4.end_time =\ To_Datetime('2020-07-13 12:28:00.100').from_datetime() order_4.miles_traveled = 3.4 order_4.tip = objects.Tip(card=3.41, cash=3) # add order to delivery delivery_3.order_ids.append(order_4.id) delivery_3.orders.append(order_4) # add delivery to shift shift.delivery_ids.append(delivery_3.id) shift.deliveries.append(delivery_3) # extra stop 1 extra_stop_1 = objects.Extra_Stop(shift, 0) extra_stop_1 = objects.Extra_Stop(shift) extra_stop_1.start_time =\ To_Datetime('2020-08-25 10:05:33.100').from_datetime() extra_stop_1.location = 'bank' extra_stop_1.reason = 'change' extra_stop_1.miles_traveled = 3.6 extra_stop_1.end_time =\ To_Datetime('2020-08-25 10:15:33.100').from_datetime() # add extra stop to shift shift.extra_stop_ids.append(extra_stop_1.id) shift.extra_stops.append(extra_stop_1) # extra stop 2 extra_stop_3 = objects.Extra_Stop(shift, 2) extra_stop_3 = objects.Extra_Stop(shift) extra_stop_3.start_time =\ To_Datetime('2020-08-25 13:17:38.100').from_datetime() extra_stop_3.location = 'mongolian grill' extra_stop_3.reason = 'trade food' extra_stop_3.miles_traveled = 4.1 extra_stop_3.end_time =\ To_Datetime('2020-08-25 13:27:57.100').from_datetime() # add extra stop to shift shift.extra_stop_ids.append(extra_stop_3.id) shift.extra_stops.append(extra_stop_3) # split split = objects.Split(shift) split.start_time = To_Datetime('2020-08-25 14:03:57.100').from_datetime() split.miles_traveled = 3.1 split.end_time = To_Datetime('2020-08-25 16:03:57.100').from_datetime() shift.split = split return shift
from menus import Shift_Tracking_Menu from objects import Shift from os import path, chdir from resources.system_names import data_directory, shifts_directory from utility.utility import now # make directories to store user data shifts_path = path.join(data_directory, shifts_directory) if not path.exists(data_directory): from os import mkdir mkdir(data_directory) if not path.exists(shifts_path): from os import mkdir mkdir(shifts_path) shift = Shift(now().date()) # check for completed shift if path.exists(shift.file_list()['info']): from menus import Completed_Shift menu = Completed_Shift(shift) shift = menu.shift # check if shift has not started elif not path.exists(shift.file_list()['directory']): shift.start() # load shift else: shift.load_current() # daily shift tracking menu Shift_Tracking_Menu(shift)
from objects import Shift import os from utility.file import Read from utility.utility import now, To_Datetime id_list = Read(Shift(now().date()).file_list()['completed_ids']).comma() uncompleted_id_list = [] os.chdir(os.path.join('data', 'shifts')) for directory in os.listdir(): if directory not in id_list: uncompleted_id_list.append(directory) print(f'Total uncompleted shifts: {len(uncompleted_id_list)}') print('List of uncompleted dates:') for directory in uncompleted_id_list: print(directory)
def test_load_shift_current(self): from objects import Shift from os import path, remove from processes.load import load_shift from utility.utility import now shift = Shift(now().date()) file_list = self.shift.file_list() # create files with open(file_list['start_time'], 'w') as start_time_file: start_time_file.write(str(self.shift.start_time)) with open(file_list['end_time'], 'w') as end_time_file: end_time_file.write(str(self.shift.end_time)) with open(file_list['miles_traveled'], 'w') as miles_traveled_file: miles_traveled_file.write(str(self.shift.miles_traveled)) with open(file_list['fuel_economy'], 'w') as fuel_economy_file: fuel_economy_file.write(str(self.shift.fuel_economy)) with open(file_list['vehicle_compensation'], 'w') as vehicle_compensation_file: vehicle_compensation_file.write( str(self.shift.vehicle_compensation)) with open(file_list['device_compensation'], 'w') as device_compensation_file: device_compensation_file.write(str(self.shift.device_compensation)) with open(file_list['total_hours'], 'w') as total_hours_file: total_hours_file.write(str(self.shift.total_hours)) with open(file_list['extra_tips_claimed'], 'w') as extra_tips_claimed_file: extra_tips_claimed_file.write(str(self.shift.extra_tips_claimed)) # check files were created and baseline self.assertTrue(path.exists(file_list['start_time'])) self.assertTrue(path.exists(file_list['end_time'])) self.assertTrue(path.exists(file_list['miles_traveled'])) self.assertTrue(path.exists(file_list['fuel_economy'])) self.assertTrue(path.exists(file_list['vehicle_compensation'])) self.assertTrue(path.exists(file_list['device_compensation'])) self.assertTrue(path.exists(file_list['total_hours'])) self.assertTrue(path.exists(file_list['extra_tips_claimed'])) self.assertNotEqual(shift.start_time, self.shift.start_time) self.assertNotEqual(shift.end_time, self.shift.end_time) self.assertNotEqual(shift.miles_traveled, self.shift.miles_traveled) self.assertNotEqual(shift.fuel_economy, self.shift.fuel_economy) self.assertNotEqual(shift.vehicle_compensation, self.shift.vehicle_compensation) self.assertNotEqual(shift.device_compensation, self.shift.device_compensation) self.assertNotEqual(shift.total_hours, self.shift.total_hours) self.assertNotEqual(shift.extra_tips_claimed, self.shift.extra_tips_claimed) # run function shift = load_shift(shift, current=True) # check that data was loaded correctly self.assertEqual(shift.start_time, self.shift.start_time) self.assertEqual(shift.end_time, self.shift.end_time) self.assertEqual(shift.miles_traveled, self.shift.miles_traveled) self.assertEqual(shift.fuel_economy, self.shift.fuel_economy) self.assertEqual(shift.vehicle_compensation, self.shift.vehicle_compensation) self.assertEqual(shift.device_compensation, self.shift.device_compensation) self.assertEqual(shift.total_hours, self.shift.total_hours) self.assertEqual(shift.extra_tips_claimed, self.shift.extra_tips_claimed) # delete files remove(file_list['start_time']) remove(file_list['end_time']) remove(file_list['miles_traveled']) remove(file_list['fuel_economy']) remove(file_list['vehicle_compensation']) remove(file_list['device_compensation']) remove(file_list['total_hours']) remove(file_list['extra_tips_claimed'])
def setUp(self): from objects import Delivery, Shift from utility.utility import now self.shift = Shift(now().date()) self.delivery = Delivery(self.shift)
def set_end_time(self): from utility.utility import now self.end_time = now()
def set_start_time(self): from utility.utility import now self.start_time = now()
def test_revise_delivery_build_prompt(self): from datetime import datetime from processes.revise import Revise_Delivery from objects import Shift, Delivery, Order, Extra_Stop from utility.utility import now # no data added yet delivery = Delivery(Shift(now().date())) test = Revise_Delivery(delivery, test=True) test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Add start time\n'\ '2. Add miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # start time added test.delivery.start_time = datetime.strptime('15:27:42', '%H:%M:%S') test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Add miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # miles traveled added test.delivery.miles_traveled = 4.7 test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Add average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # average speed added test.delivery.average_speed = 17 test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Add end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # end time added test.delivery.end_time = datetime.strptime('15:37:42', '%H:%M:%S') test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # one order added test.delivery.order_id = [0] test.delivery.orders = [Order(delivery)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Revise order/Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # two orders added test.delivery.order_id = [0, 1] test.delivery.orders = [Order(delivery), Order(delivery, 1)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # extra stop added test.delivery.extra_stop_id = [0] test.delivery.extra_stops = [Extra_Stop(delivery)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'E. Revise extra stop\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected) # two extra stops added test.delivery.extra_stop_id = [0, 1] test.delivery.extra_stops =\ [Extra_Stop(delivery), Extra_Stop(delivery, 1)] test.build_prompt() expected =\ '\n- Revise Delivery -\n'\ 'Please select an option:\n'\ '1. Revise start time\n'\ '2. Revise miles traveled\n'\ '3. Revise average speed\n'\ '4. Revise end time\n'\ 'O. Select an order/Add order\n'\ 'E. Select an extra stop\n'\ 'V. View current delivery\n'\ 'S. Save changes\n'\ 'B. Go back\n' self.assertEqual(test.prompt, expected)