Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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')
Exemplo n.º 6
0
    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')
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 11
0
    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')
Exemplo n.º 15
0
 def setUp(self):
     from testing_tools import completed_shift
     self.shift = completed_shift()