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)
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)
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)
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)
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)
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)
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])
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)
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)
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])
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)
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)
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'))
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)
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)
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)
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)))
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)