def test_view_shift_quick(self): from processes.view import View_Shift shift = completed_shift() test = View_Shift(shift).quick() carry_out_tips =\ round(sum([tip.total_amount() for tip in shift.carry_out_tips]), 2) total_tips =\ round(sum([tip.total_amount() for tip in shift.all_tips()]), 2) card_tips = round(sum([tip.card for tip in shift.card_tips()]), 2) cash_tips = round(sum([tip.cash for tip in shift.cash_tips()]), 2) expected =\ '- Shift -\n'\ f'\tDate: {shift.id}\n'\ f'\tStarted at: {shift.start_time.strftime("%I:%M:%S %p")}\n'\ f'\tNumber of deliveries: {len(shift.deliveries)}\n'\ f'\tNumber of extra stops: {len(shift.extra_stops)}\n'\ + '\tTotal made in carry out tips: ${:.2f}\n'.format(carry_out_tips)\ + '\tTotal tips: ${:.2f}\n'.format(total_tips)\ + '\tCard tips: ${:.2f}\n'.format(card_tips)\ + '\tCash tips: ${:.2f}\n'.format(cash_tips) self.assertEqual(test, expected)
def test_view_shift_main(self): from processes.view import View_Shift shift = completed_shift() test = View_Shift(shift).main() carry_out_tips =\ round(sum([tip.total_amount() for tip in shift.carry_out_tips]), 2) total_tips =\ round(sum([tip.total_amount() for tip in shift.all_tips()]), 2) card_tips = round(sum([tip.card for tip in shift.card_tips()]), 2) cash_tips = round(sum([tip.cash for tip in shift.cash_tips()]), 2) expected =\ '- Shift -\n'\ f'\tDate: {shift.id}\n'\ f'\tStarted at: {shift.start_time.strftime("%I:%M:%S %p")}\n'\ f'\tEnded at: {shift.end_time.strftime("%I:%M:%S %p")}\n'\ f'\tTotal miles traveled: {shift.miles_traveled} miles\n'\ f'\tAverage fuel economy: {shift.fuel_economy} mpg\n'\ f'\tAmount paid for vehicle usage: ${shift.vehicle_compensation}\n'\ f'\tCompensation for use of device: ${shift.device_compensation}\n'\ f'\tWork recorded hours: {shift.total_hours} hours\n'\ '\tExtra tips reported for taxes: $'\ + '{:.2f}\n'.format(shift.extra_tips_claimed)\ + '\tTotal made in carry out tips: ${:.2f}\n'.format(carry_out_tips)\ + '\tTotal tips: ${:.2f}\n'.format(total_tips)\ + '\tCard tips: ${:.2f}\n'.format(card_tips)\ + '\tCash tips: ${:.2f}\n'.format(cash_tips)\ + f'\tNumber of deliveries: {len(shift.deliveries)}\n'\ f'\tNumber of extra stops: {len(shift.extra_stops)}\n' self.assertEqual(test, expected)
def setUp(self): from os import mkdir, path from resources.system_names import\ data_directory, shifts_directory self.shift = completed_shift() mkdir(data_directory) mkdir(path.join(data_directory, shifts_directory))
def test_shift_tracking_menu_build_prompt(self): from menus import Shift_Tracking_Menu from testing_tools import completed_shift from objects import Delivery from os import mkdir, rmdir, remove, path shift = completed_shift() delivery = Delivery(shift) test = Shift_Tracking_Menu(shift, test=True) # directories dont exist expected =\ '\n- Shift Menu -\n'\ 'Please select an option:\n'\ 'D. Start delivery\n'\ 'E. Start extra stop\n'\ 'C. Enter carry out tip\n'\ 'S. Start split\n'\ 'X. End shift\n'\ 'V. View shift\n'\ 'Q. Quit program\n' test.build_prompt() self.assertEqual(test.prompt, expected) # make directories mkdir('data') mkdir(path.join('data', 'shifts')) mkdir(shift.file_list()['directory']) mkdir(delivery.file_list()['directory']) mkdir(shift.extra_stops[0].file_list()['directory']) mkdir(shift.split.file_list()['directory']) with open(shift.file_list()['end_time'], 'w') as file: file.write('') # directories do exist expected =\ '\n- Shift Menu -\n'\ 'Please select an option:\n'\ 'D. Continue delivery\n'\ 'E. Continue extra stop\n'\ 'C. Enter carry out tip\n'\ 'S. End split\n'\ 'X. Continue ending shift\n'\ 'V. View shift\n'\ 'Q. Quit program\n' test.build_prompt() self.assertEqual(test.prompt, expected) # remove directories remove(shift.file_list()['end_time']) rmdir(shift.split.file_list()['directory']) rmdir(shift.extra_stops[0].file_list()['directory']) rmdir(delivery.file_list()['directory']) rmdir(shift.file_list()['directory']) rmdir(path.join('data', 'shifts')) rmdir('data')
def test_delivery_tracking_menu_build_confirmation_text(self): from menus import Delivery_Tracking_Menu from testing_tools import completed_shift from os import mkdir, rmdir, path shift = completed_shift() delivery = shift.deliveries[1] test = Delivery_Tracking_Menu(delivery, test=True) test.user_choice = 'o' expected = 'Add new order\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'e' expected = 'Take extra stop\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'c' expected = 'Complete current delivery\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'r' expected = 'Revise current delivery\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) # make directories mkdir('data') mkdir(path.join('data', 'shifts')) mkdir(shift.file_list()['directory']) mkdir(delivery.file_list()['directory']) mkdir(delivery.orders[0].file_list()['directory']) mkdir(delivery.extra_stops[0].file_list()['directory']) test.user_choice = 'o' expected = 'Continue entering order\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'e' expected = 'Continue extra stop\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) # remove directories rmdir(delivery.extra_stops[0].file_list()['directory']) rmdir(delivery.orders[0].file_list()['directory']) rmdir(delivery.file_list()['directory']) rmdir(shift.file_list()['directory']) rmdir(path.join('data', 'shifts')) rmdir('data')
def test_view_delivery_quick(self): from processes.view import View_Delivery shift = completed_shift() delivery = shift.deliveries[0] test = View_Delivery(delivery).quick() expected =\ f'Delivery #: {delivery.id + 1}\n'\ f'\tStarted at: {delivery.start_time.strftime("%I:%M:%S %p")}\n'\ f'\tNumber of orders: {len(delivery.orders)}\n'\ self.assertEqual(test, expected)
def test_delivery_tracking_menu_build_prompt(self): from menus import Delivery_Tracking_Menu from testing_tools import completed_shift from os import mkdir, rmdir, path shift = completed_shift() delivery = shift.deliveries[1] test = Delivery_Tracking_Menu(delivery, test=True) # directories dont exist expected =\ '\n- Delivery Menu -\n'\ 'Please select an option:\n'\ 'O. Add new order\n'\ 'E. Take extra stop\n'\ 'C. Complete current delivery\n'\ 'V. View current delivery\n'\ 'R. Revise current delivery\n'\ 'B. Back a menu\n' test.build_prompt() self.assertEqual(test.prompt, expected) # make directories mkdir('data') mkdir(path.join('data', 'shifts')) mkdir(shift.file_list()['directory']) mkdir(delivery.file_list()['directory']) mkdir(delivery.orders[0].file_list()['directory']) mkdir(delivery.extra_stops[0].file_list()['directory']) # directories do exist expected =\ '\n- Delivery Menu -\n'\ 'Please select an option:\n'\ 'O. Continue entering order\n'\ 'E. Continue extra stop\n'\ 'C. Complete current delivery\n'\ 'V. View current delivery\n'\ 'R. Revise current delivery\n'\ 'B. Back a menu\n' test.build_prompt() self.assertEqual(test.prompt, expected) # remove directories rmdir(delivery.extra_stops[0].file_list()['directory']) rmdir(delivery.orders[0].file_list()['directory']) rmdir(delivery.file_list()['directory']) rmdir(shift.file_list()['directory']) rmdir(path.join('data', 'shifts')) rmdir('data')
def test_view_split(self): from processes.view import view_split shift = completed_shift() split = shift.split test = view_split(split) expected =\ '- Split -\n'\ f'\tStarted at: {split.start_time.strftime("%I:%M:%S %p")}\n'\ f'\tEnded at: {split.end_time.strftime("%I:%M:%S %p")}\n'\ f'\tMiles traveled: {split.miles_traveled} miles\n' self.assertEqual(test, expected)
def test_view_extra_stop_delivery(self): from processes.view import view_extra_stop shift = completed_shift() extra_stop = shift.deliveries[1].extra_stops[0] test = view_extra_stop(extra_stop) expected =\ f'Extra stop id #: {extra_stop.id + 1}\n'\ f'\tExtra stop was completed at: {extra_stop.end_time.strftime("%I:%M:%S %p")}\n'\ f'\tLocation: {extra_stop.location.capitalize()}\n'\ f'\tReason: {extra_stop.reason.capitalize()}\n'\ f'\tDistance to extra stop: {extra_stop.miles_traveled} miles\n' self.assertEqual(test, expected)
def test_cash_tips(self): import objects self.assertEqual(self.shift.all_tips(), []) self.shift = completed_shift() expected_list = [ objects.Tip(cash=5).cash, objects.Tip(card=3.41, cash=3).cash, objects.Tip(cash=2.71).cash ] test_list = [tip.cash for tip in self.shift.cash_tips()] self.assertEqual(test_list, expected_list)
def test_view_delivery_main(self): from processes.view import View_Delivery shift = completed_shift() delivery = shift.deliveries[0] test = View_Delivery(delivery).main() expected =\ f'Delivery #: {delivery.id + 1}\n'\ f'\tTotal time on delivery: {delivery.end_time - delivery.start_time}\n'\ f'\tStarted at: {delivery.start_time.strftime("%I:%M:%S %p")}\n'\ f'\tCompleted at: {delivery.end_time.strftime("%I:%M:%S %p")}\n'\ f'\tNumber of orders: {len(delivery.orders)}\n'\ f'\tOrder I.D. #: {delivery.orders[0].id}\n'\ f'\tTotal distance traveled for delivery: {delivery.miles_traveled} miles\n'\ f'\tAverage speed for delivery: {delivery.average_speed} mph\n' self.assertEqual(test, expected)
def test_all_tips(self): import objects self.assertEqual(self.shift.all_tips(), []) self.shift = completed_shift() expected_list = [ objects.Tip(cash=5).total_amount(), objects.Tip().total_amount(), objects.Tip(card=2.78).total_amount(), objects.Tip(card=3.41, cash=3).total_amount(), objects.Tip(card=3.11).total_amount(), objects.Tip(cash=2.71).total_amount() ] test_list = [tip.total_amount() for tip in self.shift.all_tips()] self.assertEqual(test_list, expected_list)
def test_completed_shift_resume_shift(self): # this test can be greately improved because right now its only testing # against one file rather then an entire shift's files # this test is also poor because the completed ids file will only work for short time frame from menus import Completed_Shift from testing_tools import completed_shift from utility.utility import now from os import mkdir, path, remove, rmdir shift = completed_shift() # create directories and files mkdir('data') mkdir(path.join('data', 'shifts')) mkdir(shift.file_list()['directory']) with open(shift.file_list()['info'], 'w') as file: file.write(shift.csv()) with open(shift.file_list()['completed_ids'], 'w') as file: file.write( '2020-09-12,2020-09-14,2020-09-18,2020-09-19,2020-09-20') # run method test = Completed_Shift(shift, test=True).resume_shift() # check that method did what its supposed to self.assertFalse(path.exists(shift.file_list()['info'])) self.assertTrue(path.exists(shift.file_list()['start_time'])) self.assertEqual(test.shift.start_time, shift.start_time) # delete directories and files remove(shift.file_list()['start_time']) remove(shift.file_list()['completed_ids']) rmdir(shift.file_list()['directory']) rmdir(path.join('data', 'shifts')) rmdir('data')
def test_shift_tracking_menu_build_confirmation_text(self): from menus import Shift_Tracking_Menu from testing_tools import completed_shift from objects import Delivery from os import mkdir, rmdir, remove, path shift = completed_shift() delivery = Delivery(shift) test = Shift_Tracking_Menu(shift, test=True) test.user_choice = 'd' expected = 'Start delivery\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'e' expected = 'Start extra stop\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'c' expected = 'Enter carry out tip\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 's' expected = 'Start split\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'x' expected = 'End shift\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) # make directories mkdir('data') mkdir(path.join('data', 'shifts')) mkdir(shift.file_list()['directory']) mkdir(delivery.file_list()['directory']) mkdir(shift.extra_stops[0].file_list()['directory']) mkdir(shift.split.file_list()['directory']) with open(shift.file_list()['end_time'], 'w') as file: file.write('') test.user_choice = 'd' expected = 'Continue delivery\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'e' expected = 'Continue extra stop\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 's' expected = 'End split\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) test.user_choice = 'x' expected = 'Continue ending shift\n' test.build_confirmation_text() self.assertEqual(test.confirmation_text, expected) # remove directories remove(shift.file_list()['end_time']) rmdir(shift.split.file_list()['directory']) rmdir(shift.extra_stops[0].file_list()['directory']) rmdir(delivery.file_list()['directory']) rmdir(shift.file_list()['directory']) rmdir(path.join('data', 'shifts')) rmdir('data')
def setUp(self): from testing_tools import completed_shift self.shift = completed_shift()