def buy_product(request): vm = VendingMachine() try: vm.buy_product() return JsonResponse({'msg': vm.message, 'product': "product"}) except RuntimeError as e: return JsonResponse({'msg': e.message, 'product': None})
def test_get_balance_returns_sum_of_coins_minus_purchases(): machine = VendingMachine() machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Toonie()) machine.buy_product(products.Candy) assert machine.get_balance() == 85
def test_buy_product_returns_instance_when_valid(): machine = VendingMachine() machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Toonie()) result = machine.buy_product(products.Drink) assert isinstance(result, products.Drink)
def test_buy_drink_with_insufficient_funds(): machine = VendingMachine() with pytest.raises(InsufficientFunds): machine.buy_product(products.Drink)
def test_buy_product_accepts_candy(): machine = VendingMachine() machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Toonie()) machine.buy_product(products.Candy)
def test_buy_product_accepts_drink(): machine = VendingMachine() machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Loonie()) machine.buy_product(products.Drink)
def test_buy_product_accepts_chips_with_sufficient_balance(): machine = VendingMachine() machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Quarter()) machine.buy_product(products.Chips)
def test_buy_product_rejects_strings(): machine = VendingMachine() with pytest.raises(ValueError): machine.buy_product(str)