示例#1
0
    def test_move_item_to_slot_empty_target_slot(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Soda', 1.25, 20))

        self.assertTrue(vending_machine.move_item_to_slot(1, 2))
        self.assertIsNone(vending_machine.slot_items[1])
        self.assertEqual('Soda', vending_machine.slot_items[2].name)
示例#2
0
    def test_decrease_stock_amount_higher_than_current_stock(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))
        decreased, new_stock = vending_machine.decrease_stock(1, 25)

        self.assertTrue(decreased)
        self.assertEqual(0, new_stock)
        self.assertEqual(0, vending_machine.slot_items[1].stock)
示例#3
0
    def test_move_item_to_slot_replace_item_in_target_slot(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Soda', 1.25, 20))
        vending_machine.add_item_to_slot(2, Item('Coffee', 1.75, 6))

        self.assertTrue(vending_machine.move_item_to_slot(1, 2, replace=True))
        self.assertIsNone(vending_machine.slot_items[1])
        self.assertEqual('Soda', vending_machine.slot_items[2].name)
示例#4
0
    def test_move_item_to_slot_target_slot_has_item(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Soda', 1.25, 20))
        vending_machine.add_item_to_slot(2, Item('Coffee', 1.75, 6))

        self.assertFalse(vending_machine.move_item_to_slot(1, 2))
        self.assertEqual('Soda', vending_machine.slot_items[1].name)
        self.assertEqual('Coffee', vending_machine.slot_items[2].name)
示例#5
0
    def test_decrease_stock_amount_success(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))
        decreased, new_stock = vending_machine.decrease_stock(1, 4)

        self.assertTrue(decreased)
        self.assertEqual(2, new_stock)
        self.assertEqual(2, vending_machine.slot_items[1].stock)
示例#6
0
    def test_increase_stock_success(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))
        increased, new_stock = vending_machine.increase_stock(1, 15)

        self.assertTrue(increased)
        self.assertEqual(21, new_stock)
        self.assertEqual(21, vending_machine.slot_items[1].stock)
示例#7
0
    def test_remove_item_from_slot_success(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)

        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, sparkling_water)
        removed = vending_machine.remove_item_from_slot(1)

        self.assertTrue(removed)
        self.assertEqual(9, vending_machine.available_slots)
        self.assertIsNone(vending_machine.slot_items[1])
示例#8
0
    def test_select_and_vend_not_enough_money(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)

        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, sparkling_water)
        vended, item_summary, vend_result, total_balance = vending_machine.select_and_vend(
            1)

        self.assertFalse(vended)
        self.assertEqual('Sparkling Water', item_summary)
        self.assertEqual('Insufficient Balance', vend_result)
示例#9
0
    def test_select_and_vend_out_of_stock(self):
        orange_juice = Item('Orange Juice', 1.50, 0)

        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, orange_juice)
        vending_machine.insert_money(12)
        vended, item_summary, vend_result, total_balance = vending_machine.select_and_vend(
            1)

        self.assertFalse(vended)
        self.assertEqual('Orange Juice', item_summary)
        self.assertEqual('Out of Stock', vend_result)
示例#10
0
    def test_add_item_to_slot_already_occupied_with_other_item(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)
        regular_water = Item('Water', 1.00, 2)

        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, sparkling_water)
        added = vending_machine.add_item_to_slot(1, regular_water)

        self.assertFalse(added)
        self.assertEqual(8, vending_machine.available_slots)
        self.assertNotEqual('Water', vending_machine.slot_items[1].name)
        self.assertIsNotNone(vending_machine.slot_items[1])
示例#11
0
    def test_select_and_vend_success(self):
        soda = Item('Soda', 1.25, 20)

        vending_machine = VendingMachine()
        vending_machine.insert_money(10.0)
        vending_machine.add_item_to_slot(3, soda)
        vended, item_summary, vend_result, total_balance = vending_machine.select_and_vend(
            3)

        self.assertTrue(vended)
        self.assertEqual('Soda', item_summary)
        self.assertEqual('Vended: Soda', vend_result)
        self.assertEqual(8.75, total_balance)
示例#12
0
    def test_add_item_to_slot_already_occupied_with_same_item(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)

        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, sparkling_water)

        sparkling_water2 = Item('Sparkling Water', 1.5, 21)
        added = vending_machine.add_item_to_slot(1,
                                                 sparkling_water2,
                                                 replace=True)

        self.assertTrue(added)
        self.assertEqual(8, vending_machine.available_slots)
        self.assertEqual('Sparkling Water', vending_machine.slot_items[1].name)
        self.assertEqual(1.5, vending_machine.slot_items[1].price)
        self.assertEqual(27, vending_machine.slot_items[1].stock)
示例#13
0
    def test_add_item_to_slot_invalid_slot(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)

        vending_machine = VendingMachine()
        added = vending_machine.add_item_to_slot(10, sparkling_water)

        self.assertFalse(added)
        self.assertEqual(9, vending_machine.available_slots)
        self.assertEqual('Invalid slot',
                         vending_machine.slot_items.get(10, 'Invalid slot'))
示例#14
0
    def test_add_item_to_slot_success(self):
        sparkling_water = Item('Sparkling Water', 1.25, 6)

        vending_machine = VendingMachine()
        added = vending_machine.add_item_to_slot(1, sparkling_water)

        self.assertTrue(added)
        self.assertEqual(8, vending_machine.available_slots)
        self.assertEqual('Sparkling Water', vending_machine.slot_items[1].name)
        self.assertEqual(1.25, vending_machine.slot_items[1].price)
        self.assertEqual(6, vending_machine.slot_items[1].stock)
示例#15
0
    def test_change_price_success(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))

        self.assertTrue(vending_machine.change_price(1, 2.25))
        self.assertEqual(2.25, vending_machine.slot_items[1].price)
示例#16
0
 def test_replace_item_in_slot_empty_slot(self):
     vending_machine = VendingMachine()
     vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))
     self.assertTrue(
         vending_machine.replace_item_in_slot(1, Item('Soda', 1.25, 20)))
     self.assertTrue(8, vending_machine.available_slots)
示例#17
0
 def test_replace_item_in_slot_success(self):
     vending_machine = VendingMachine()
     vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))
     self.assertTrue(
         vending_machine.replace_item_in_slot(1, Item('Soda', 1.25, 20)))
示例#18
0
    def test_change_name_success(self):
        vending_machine = VendingMachine()
        vending_machine.add_item_to_slot(1, Item('Coffee', 1.75, 6))

        self.assertTrue(vending_machine.change_name(1, 'Iced Tea'))
        self.assertEqual('Iced Tea', vending_machine.slot_items[1].name)