def test_load_extra_stop_shift_current(self): from objects import Extra_Stop from os import mkdir, path, remove, rmdir from processes.load import load_extra_stop extra_stop = Extra_Stop(self.shift) file_list = extra_stop.file_list() # create file mkdir(file_list['directory']) with open(file_list['location'], 'w') as location_file: location_file.write(self.shift.extra_stops[0].location) with open(file_list['reason'], 'w') as reason_file: reason_file.write(self.shift.extra_stops[0].reason) with open(file_list['miles_traveled'], 'w') as miles_traveled_file: miles_traveled_file.write( str(self.shift.extra_stops[0].miles_traveled)) with open(file_list['start_time'], 'w') as start_time_file: start_time_file.write(str(self.shift.extra_stops[0].start_time)) with open(file_list['end_time'], 'w') as end_time_file: end_time_file.write(str(self.shift.extra_stops[0].end_time)) # check that file was created and baseline self.assertTrue(path.exists(file_list['location'])) self.assertTrue(path.exists(file_list['reason'])) self.assertTrue(path.exists(file_list['miles_traveled'])) self.assertTrue(path.exists(file_list['start_time'])) self.assertTrue(path.exists(file_list['end_time'])) self.assertNotEqual(extra_stop.location, self.shift.extra_stops[0].location) self.assertNotEqual(extra_stop.reason, self.shift.extra_stops[0].reason) self.assertNotEqual(extra_stop.miles_traveled, self.shift.extra_stops[0].miles_traveled) self.assertNotEqual(extra_stop.start_time, self.shift.extra_stops[0].start_time) self.assertNotEqual(extra_stop.end_time, self.shift.extra_stops[0].end_time) # run function extra_stop = load_extra_stop(extra_stop, current=True) # check that data was loaded correctly self.assertEqual(extra_stop.location, self.shift.extra_stops[0].location) self.assertEqual(extra_stop.reason, self.shift.extra_stops[0].reason) self.assertEqual(extra_stop.miles_traveled, self.shift.extra_stops[0].miles_traveled) self.assertEqual(extra_stop.start_time, self.shift.extra_stops[0].start_time) self.assertEqual(extra_stop.end_time, self.shift.extra_stops[0].end_time) # delete file remove(file_list['location']) remove(file_list['reason']) remove(file_list['miles_traveled']) remove(file_list['start_time']) remove(file_list['end_time']) rmdir(file_list['directory'])
def build_prompt(self): from objects import Extra_Stop, Order from os import path from utility.utility import add_newlines # initial self.prompt = self.display_text['initial'] + '\n' # order order_index = 0 if path.exists(Order(self.delivery).file_list()['directory']): order_index = 1 self.prompt += f'O. {self.display_text["order"][order_index]}\n' # extra stop extra_stop_index = 0 if path.exists(Extra_Stop(self.delivery).file_list()['directory']): extra_stop_index = 1 self.prompt +=\ f'E. {self.display_text["extra_stop"][extra_stop_index]}\n' # complete self.prompt += f'C. {self.display_text["end"]}\n' # view self.prompt += f'V. {self.display_text["view"]}\n' # revise self.prompt += f'R. {self.display_text["revise"]}\n' # back self.prompt += f'B. {self.display_text["back"]}\n' self.prompt = add_newlines(self.prompt)
def build_confirmation_text(self): import re from os import path # delivery if self.user_selection.lower() == 'o': from objects import Order if not path.exists(Order(self.delivery).file_list()['directory']): self.confirmation_text = self.display_text['order'][0] else: self.confirmation_text = self.display_text['order'][1] # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop extra_stop_directory =\ Extra_Stop(self.delivery).file_list()['directory'] if not path.exists(extra_stop_directory): self.confirmation_text = self.display_text['extra_stop'][0] else: self.confirmation_text = self.display_text['extra_stop'][1] # complete elif self.user_selection.lower() == 'c': self.confirmation_text = self.display_text['end'] # revise elif self.user_selection.lower() == 'r': self.confirmation_text = self.display_text['revise']
def load_parent_extra_stops(parent): from objects import Delivery, Shift if not isinstance(parent, (Delivery, Shift)): raise TypeError from objects import Extra_Stop from os import path from utility.file import Read extra_stop_ids_file = Extra_Stop(parent).file_list()['completed_ids'] if path.exists(extra_stop_ids_file): # ids parent.extra_stop_ids = Read(extra_stop_ids_file).integer_list() # extra stops parent.extra_stops = [ Extra_Stop(parent, id).load_completed() for id in parent.extra_stop_ids ] return parent
def test_load_extra_stop_shift_completed(self): from objects import Extra_Stop from os import remove, path from processes.load import load_extra_stop extra_stop = Extra_Stop(self.shift) file_list = extra_stop.file_list() # create file with open(file_list['info'], 'w') as info_file: info_file.write(self.shift.extra_stops[0].nlsv()) # check that file was created and baseline self.assertTrue(path.exists(file_list['info'])) self.assertNotEqual(extra_stop.location, self.shift.extra_stops[0].location) self.assertNotEqual(extra_stop.reason, self.shift.extra_stops[0].reason) self.assertNotEqual(extra_stop.miles_traveled, self.shift.extra_stops[0].miles_traveled) self.assertNotEqual(extra_stop.start_time, self.shift.extra_stops[0].start_time) self.assertNotEqual(extra_stop.end_time, self.shift.extra_stops[0].end_time) # run function extra_stop = load_extra_stop(extra_stop) # check that data was loaded correctly self.assertEqual(extra_stop.location, self.shift.extra_stops[0].location) self.assertEqual(extra_stop.reason, self.shift.extra_stops[0].reason) self.assertEqual(extra_stop.miles_traveled, self.shift.extra_stops[0].miles_traveled) self.assertEqual(extra_stop.start_time, self.shift.extra_stops[0].start_time) self.assertEqual(extra_stop.end_time, self.shift.extra_stops[0].end_time) # delete file remove(file_list['info'])
def test_load_extra_stop_delivery_completed(self): from objects import Extra_Stop from os import mkdir, path, rmdir, remove from processes.load import load_extra_stop delivery = self.shift.deliveries[1] extra_stop = Extra_Stop(delivery) file_list = extra_stop.file_list() # create file and directory mkdir(delivery.file_list()['directory']) with open(file_list['info'], 'w') as info_file: info_file.write(delivery.extra_stops[0].nlsv()) # check that file was created and baseline self.assertTrue(path.exists(file_list['info'])) self.assertNotEqual(extra_stop.location, delivery.extra_stops[0].location) self.assertNotEqual(extra_stop.reason, delivery.extra_stops[0].reason) self.assertNotEqual(extra_stop.miles_traveled, delivery.extra_stops[0].miles_traveled) self.assertNotEqual(extra_stop.end_time, delivery.extra_stops[0].end_time) # run function extra_stop = load_extra_stop(extra_stop) # check that data was loaded correctly self.assertEqual(extra_stop.location, delivery.extra_stops[0].location) self.assertEqual(extra_stop.reason, delivery.extra_stops[0].reason) self.assertEqual(extra_stop.miles_traveled, delivery.extra_stops[0].miles_traveled) self.assertEqual(extra_stop.end_time, delivery.extra_stops[0].end_time) # delete file remove(file_list['info']) rmdir(delivery.file_list()['directory'])
def result(self): # order if self.user_selection.lower() == 'o': from objects import Order import os from processes.consolidate import consolidate_order from processes.track import track_order order = Order(self.delivery) if os.path.exists(order.file_list()['directory']): order.load_current() order = track_order(order) consolidate_order(order) self.delivery.add_order(order) # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop import os from processes.consolidate import consolidate_extra_stop from processes.track import track_extra_stop extra_stop = Extra_Stop(self.delivery).load_current() extra_stop = track_extra_stop(extra_stop) consolidate_extra_stop(extra_stop) self.delivery.add_extra_stop(extra_stop) # complete elif self.user_selection.lower() == 'c': from processes.consolidate import consolidate_delivery from processes.track import end_delivery self.delivery = end_delivery(self.delivery) consolidate_delivery(self.delivery) self.loop_condition = False self.complete = True # view elif self.user_selection.lower() == 'v': View_Delivery_Menu(self.delivery) # revise elif self.user_selection.lower() == 'r': from processes.revise import Revise_Delivery revise_delivery = Revise_Delivery(self.delivery) self.delivery = revise_delivery.delivery # back elif self.user_selection.lower() == 'b': self.loop_condition = False
def build_prompt(self): from objects import Delivery, Extra_Stop, Split from os import path from utility.utility import add_newlines # initial self.prompt = f"\n{self.display_text['initial']}\n" # delivery delivery_index = 0 if path.exists(Delivery(self.shift).file_list()['directory']): delivery_index = 1 self.prompt += f'D. {self.display_text["delivery"][delivery_index]}\n' # extra stop extra_stop_index = 0 if path.exists(Extra_Stop(self.shift).file_list()['directory']): extra_stop_index = 1 self.prompt +=\ f'E. {self.display_text["extra_stop"][extra_stop_index]}\n' # carry out tip self.prompt += f'C. {self.display_text["tip"]}\n' # split split_index = 0 if path.exists(Split(self.shift).file_list()['directory']): split_index = 1 self.prompt += f'S. {self.display_text["split"][split_index]}\n' # end shift end_index = 0 if path.exists(self.shift.file_list()['end_time']): end_index = 1 self.prompt += f'X. {self.display_text["end"][end_index]}\n' # view self.prompt += f'V. {self.display_text["view"]}\n' # revise self.prompt += f'R. {self.display_text["revise"]}\n' # quit self.prompt += f'Q. {self.display_text["quit"]}\n' self.prompt = add_newlines(self.prompt)
def build_confirmation_text(self): from os import path # delivery if self.user_selection.lower() == 'd': from objects import Delivery if not path.exists(Delivery(self.shift).file_list()['directory']): self.confirmation_text = self.display_text['delivery'][0] else: self.confirmation_text = self.display_text['delivery'][1] # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop if not path.exists( Extra_Stop(self.shift).file_list()['directory']): self.confirmation_text = self.display_text['extra_stop'][0] else: self.confirmation_text = self.display_text['extra_stop'][1] # carry out tip elif self.user_selection.lower() == 'c': self.confirmation_text = self.display_text['tip'] # split elif self.user_selection.lower() == 's': from objects import Split if not path.exists(Split(self.shift).file_list()['directory']): self.confirmation_text = self.display_text['split'][0] else: self.confirmation_text = self.display_text['split'][1] # end elif self.user_selection.lower() == 'x': if not path.exists(self.shift.file_list()['end_time']): self.confirmation_text = self.display_text['end'][0] else: self.confirmation_text = self.display_text['end'][1] # revise elif self.user_selection.lower() == 'r': self.confirmation_text = self.display_text['revise']
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)
def result(self): # delivery if self.user_selection.lower() == 'd': from objects import Delivery import os from processes.track import start_delivery delivery = start_delivery(Delivery(self.shift)) delivery_menu = Delivery_Tracking_Menu(delivery) if delivery_menu.complete is True: self.shift.add_delivery(delivery_menu.delivery) # extra stop elif self.user_selection.lower() == 'e': from objects import Extra_Stop import os from processes.consolidate import consolidate_extra_stop from processes.load import load_extra_stop from processes.track import track_extra_stop extra_stop = Extra_Stop(self.shift).load_current() extra_stop = track_extra_stop(extra_stop) consolidate_extra_stop(extra_stop) self.shift.add_extra_stop(extra_stop) # carry out tip elif self.user_selection.lower() == 'c': from objects import Tip from utility.file import save tip = Tip().input_both() save(tip.csv(), self.shift.file_list()['tips'], '\n') self.shift.carry_out_tips.append(tip) # split elif self.user_selection.lower() == 's': from objects import Split from os import path from processes.consolidate import consolidate_split if not path.exists(Split(self.shift).file_list()['start_time']): self.shift.split = Split(self.shift).start() self.loop_condition = False else: self.shift.split.end() consolidate_split(self.shift.split) # end shift elif self.user_selection.lower() == 'x': from processes.consolidate import consolidate_shift from processes.track import end_shift self.shift = end_shift(self.shift) consolidate_shift(self.shift) self.loop_condition = False # view elif self.user_selection.lower() == 'v': View_Shift_Menu(self.shift) # revise elif self.user_selection.lower() == 'r': from processes.revise import Revise_Shift revise_shift = Revise_Shift(self.shift) self.shift = revise_shift.shift # quit elif self.user_selection.lower() == 'q': self.loop_condition = False return self