Example #1
0
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
Example #2
0
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)
Example #3
0
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()
    ]
Example #4
0
 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
    ]
Example #8
0
def test_toonie_str():
    coin = coins.Toonie()
    assert str(coin) == '$2'
Example #9
0
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
Example #12
0
def test_buy_product_accepts_candy():
    machine = VendingMachine()
    machine.insert_coin(coins.Toonie())
    machine.insert_coin(coins.Toonie())
    machine.buy_product(products.Candy)
Example #13
0
def test_buy_product_accepts_drink():
    machine = VendingMachine()
    machine.insert_coin(coins.Toonie())
    machine.insert_coin(coins.Loonie())
    machine.buy_product(products.Drink)
Example #14
0
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)