|
2 | 2 |
|
3 | 3 | import coins
|
4 | 4 | import products
|
5 |
| -from vending_machine import VendingMachine |
| 5 | +from vending_machine import InsufficientFunds, VendingMachine |
6 | 6 |
|
7 | 7 |
|
8 | 8 | def test_insert_coin_rejects_integer():
|
@@ -42,16 +42,60 @@ def test_buy_product_rejects_strings():
|
42 | 42 | with pytest.raises(ValueError):
|
43 | 43 | machine.buy_product(str)
|
44 | 44 |
|
45 |
| -def test_buy_product_accepts_chips(): |
| 45 | + |
| 46 | +def test_buy_product_accepts_chips_with_sufficient_balance(): |
46 | 47 | machine = VendingMachine()
|
| 48 | + machine.insert_coin(coins.Toonie()) |
| 49 | + machine.insert_coin(coins.Quarter()) |
47 | 50 | machine.buy_product(products.Chips)
|
48 | 51 |
|
49 | 52 |
|
50 | 53 | def test_buy_product_accepts_drink():
|
51 | 54 | machine = VendingMachine()
|
| 55 | + machine.insert_coin(coins.Toonie()) |
| 56 | + machine.insert_coin(coins.Loonie()) |
52 | 57 | machine.buy_product(products.Drink)
|
53 | 58 |
|
54 | 59 |
|
55 | 60 | def test_buy_product_accepts_candy():
|
56 | 61 | machine = VendingMachine()
|
| 62 | + machine.insert_coin(coins.Toonie()) |
| 63 | + machine.insert_coin(coins.Toonie()) |
| 64 | + machine.buy_product(products.Candy) |
| 65 | + |
| 66 | + |
| 67 | +def test_get_balance_returns_zero_when_no_coins(): |
| 68 | + machine = VendingMachine() |
| 69 | + assert machine.get_balance() == 0 |
| 70 | + |
| 71 | + |
| 72 | +def test_get_balance_returns_sum_value_of_coins(): |
| 73 | + machine = VendingMachine() |
| 74 | + machine.insert_coin(coins.Quarter()) |
| 75 | + machine.insert_coin(coins.Loonie()) |
| 76 | + |
| 77 | + assert machine.get_balance() == 125 |
| 78 | + |
| 79 | + |
| 80 | +def test_buy_drink_with_insufficient_funds(): |
| 81 | + machine = VendingMachine() |
| 82 | + with pytest.raises(InsufficientFunds): |
| 83 | + machine.buy_product(products.Drink) |
| 84 | + |
| 85 | + |
| 86 | +def test_buy_product_returns_instance_when_valid(): |
| 87 | + machine = VendingMachine() |
| 88 | + machine.insert_coin(coins.Toonie()) |
| 89 | + machine.insert_coin(coins.Toonie()) |
| 90 | + result = machine.buy_product(products.Drink) |
| 91 | + |
| 92 | + assert isinstance(result, products.Drink) |
| 93 | + |
| 94 | + |
| 95 | +def test_get_balance_returns_sum_of_coins_minus_purchases(): |
| 96 | + machine = VendingMachine() |
| 97 | + machine.insert_coin(coins.Toonie()) |
| 98 | + machine.insert_coin(coins.Toonie()) |
57 | 99 | machine.buy_product(products.Candy)
|
| 100 | + |
| 101 | + assert machine.get_balance() == 85 |
0 commit comments