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_inserted_coins_are_appended_to_coin_list(): machine = VendingMachine() machine.insert_coin(coins.Loonie()) machine.insert_coin(coins.Toonie()) machine.insert_coin(coins.Quarter()) assert machine.inserted_coins == [ coins.Loonie(), coins.Toonie(), coins.Quarter() ]
def get_change(self): """ method to return change, larger coin value first not perfect one since when test 85 we expect 3 quarter and 1 dime this will give 2 quarter 3 dime 1 nickel """ coins_list = [ coins.Toonie(), coins.Loonie(), coins.Quarter(), coins.Dime(), coins.Nickel() ] list_changes = [] temp = self.get_balance() temp -= temp % 5 while temp > 0: for coin in coins_list: if temp % coin.value == 0: list_changes.append(coin) temp -= coin.value break return sorted(list_changes, key=lambda customer: customer.value, reverse=True)
def test_get_balance_two_loonie_candy_75(): """ given that two toonies are inserted into the machine and a candy bar was purchased, the method should return 85. """ machine = vending_machine.VendingMachine() toonie = coins.Toonie() candy = products.Candy() machine.insert_coin(toonie) machine.insert_coin(toonie) machine.buy_product(candy) assert machine.get_balance() == 85
def test_get_change_balance_265(): """ When the balance is 265, a toonie, two quarters, a dime and a nickel should be returned """ machine = vending_machine.VendingMachine() quarter = coins.Quarter() toonie = coins.Toonie() dime = coins.Dime() nickel = coins.Nickel() machine.insert_coin(quarter) machine.insert_coin(toonie) machine.insert_coin(quarter) machine.insert_coin(dime) machine.insert_coin(nickel) assert machine.get_change() == [toonie, quarter, quarter, dime, nickel]
def test_vending_machine_whole(): """ Here we do a integrated test to simulate a action of using vending machine """ machine1 = vending_machine.VendingMachine() quarter = coins.Quarter() toonie = coins.Toonie() dime = coins.Dime() nickel = coins.Nickel() loonie = coins.Loonie() candy = products.Candy() chips = products.Chips() machine1.insert_coin(toonie) machine1.insert_coin(loonie) machine1.insert_coin(loonie) machine1.insert_coin(toonie) machine1.insert_coin(quarter) candy = products.Candy() chips = products.Chips() machine1.buy_product(candy) machine1.buy_product(chips) assert machine1.get_change() == [ quarter, quarter, dime, dime, dime, nickel ]
def test_toonie_str(): coin = coins.Toonie() assert str(coin) == '$2'
def test_toonie_value(): coin = coins.Toonie() assert coin.value == 200
def test_toonie_str_label(): """ test toonie child class of Coin label is $2 """ coin = coins.Toonie() assert str(coin) == '$2'
def test_toonie_value_200(): """ test child class toonie of Coin value is 200 """ coin = coins.Toonie() assert coin.value == 200
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)