Example #1
0
    def test_adding_an_order_updates_the_schedule(self):
        scheduler = CafeScheduler()

        scheduler.add_order(12, [SANDWICH])
        tasks_1 = scheduler.schedule()

        scheduler.add_order(13, [SANDWICH])
        tasks_2 = scheduler.schedule()

        self.assertNotEqual(tasks_1, tasks_2)
        self.assertEqual(3, len(tasks_1))
        self.assertEqual(5, len(tasks_2))
Example #2
0
    def test_non_sandwich_order_items_are_ignored_by_schedule(self):
        scheduler = CafeScheduler()

        order_items = [
            SANDWICH,
            SNACK,
            DRINK,
        ]
        scheduler.add_order(12, order_items)
        tasks = scheduler.schedule()

        expected_tasks = [
            Task(order_id=12,
                 description='Make sandwich 1 for Order 12',
                 start_time_seconds=0,
                 task_type='MAKE_SANDWICH'),
            Task(order_id=12,
                 description='Serve Order 12',
                 start_time_seconds=150,
                 task_type='SERVE'),
            Task(order_id=None,
                 description='Take a break',
                 start_time_seconds=210,
                 task_type='BREAK'),
        ]

        self.assertEqual(3, len(tasks))
        self.assertEqual(expected_tasks, tasks)
Example #3
0
    def test_order_number_is_set_for_each_item_in_schedule(self):
        scheduler = CafeScheduler()

        scheduler.add_order(34, [SANDWICH])
        scheduler.add_order(35, [SANDWICH])

        tasks = scheduler.schedule()

        self.assertEqual(5, len(tasks))
        self.assertEqual(34, tasks[0].order_id)
        self.assertEqual(34, tasks[1].order_id)
        self.assertEqual(35, tasks[2].order_id)
        self.assertEqual(35, tasks[3].order_id)
        self.assertEqual(None, tasks[4].order_id)
Example #4
0
    def test_start_time_is_incremented_for_each_item_in_schedule(self):
        scheduler = CafeScheduler()

        scheduler.add_order(34, [SANDWICH])
        scheduler.add_order(35, [SANDWICH])

        tasks = scheduler.schedule()

        self.assertEqual(5, len(tasks))
        self.assertEqual(0, tasks[0].start_time_seconds)
        self.assertEqual(150, tasks[1].start_time_seconds)
        self.assertEqual(210, tasks[2].start_time_seconds)
        self.assertEqual(360, tasks[3].start_time_seconds)
        self.assertEqual(420, tasks[4].start_time_seconds)
Example #5
0
    def test_schedule_returns_list_of_tasks_with_a_description(self):
        scheduler = CafeScheduler()

        scheduler.add_order(34, [SANDWICH])
        scheduler.add_order(35, [SANDWICH])

        tasks = scheduler.schedule()

        self.assertEqual(5, len(tasks))
        self.assertEqual("Make sandwich 1 for Order 34", tasks[0].description)
        self.assertEqual("Serve Order 34", tasks[1].description)
        self.assertEqual("Make sandwich 1 for Order 35", tasks[2].description)
        self.assertEqual("Serve Order 35", tasks[3].description)
        self.assertEqual("Take a break", tasks[4].description)
Example #6
0
    def test_schedule_returns_tasks_for_each_sandwich_in_an_order_with_multiple_sandwiches(
            self):
        scheduler = CafeScheduler()

        order_items = [
            SANDWICH,
            SANDWICH,
            SANDWICH,
        ]
        scheduler.add_order(87, order_items)

        tasks = scheduler.schedule()

        expected_tasks = [
            Task(order_id=87,
                 description='Make sandwich 1 for Order 87',
                 start_time_seconds=0,
                 task_type='MAKE_SANDWICH'),
            Task(order_id=87,
                 description='Make sandwich 2 for Order 87',
                 start_time_seconds=150,
                 task_type='MAKE_SANDWICH'),
            Task(order_id=87,
                 description='Make sandwich 3 for Order 87',
                 start_time_seconds=300,
                 task_type='MAKE_SANDWICH'),
            Task(order_id=87,
                 description='Serve Order 87',
                 start_time_seconds=450,
                 task_type='SERVE'),
            Task(order_id=None,
                 description='Take a break',
                 start_time_seconds=510,
                 task_type='BREAK'),
        ]

        self.assertEqual(5, len(tasks))
        self.assertEqual(expected_tasks, tasks)