Beispiel #1
0
class TestOperation(TestCase):
    def setUp(self):
        self.atm = ATM(500)
        account = mocked_account(balance=700)
        card = mocked_card(account=account)
        self.atm.validate_card(card, ANY)

    def test_get_balance(self):
        self.assertEqual(self.atm.card_balance(), 700)
        self.atm.card.get_account().get_balance.assert_called_with()

    def test_get_cash_success(self):
        remaining = self.atm.get_money(50)
        self.atm.card.get_account().get_balance.assert_called_with()
        self.atm.card.get_account().withdraw.assert_called_with(50)
        self.assertEqual(remaining, 600)
        self.assertEqual(self.atm.card_balance(), 650)
        self.assertEqual(self.atm.money_balance, 450)

    def test_not_enough_money_in_atm(self):
        with self.assertRaises(NotEnoughMoneyInATM):
            self.atm.get_money(600)

    def test_not_enough_money_in_account(self):
        with self.assertRaises(NotEnoughMoneyInAccount):
            self.atm.get_money(850)
Beispiel #2
0
class TestValidation(TestCase):
    def setUp(self):
        self.atm = ATM(100)

    def test_good_card_validation(self):
        card = mocked_card()
        self.atm.validate_card(card, sentinel.pin_code)

        #card.check_pin.assert_called_once_with(sentinel.pin_code)
        self.assertEqual(self.atm.card, card)

    def test_blocked_card_validation(self):
        card = mocked_card(blocked=True)
        self.atm.validate_card(card, ANY)

        card.check_pin.assert_not_called()
        self.assertIsNone(self.atm.card)
        self.test_no_card_inserted()

    def test_wrong_pin_validation(self):
        card = mocked_card(pin=False)
        self.atm.validate_card(card, sentinel.pin_code)

        #card.check_pin.assert_called_once_with(sentinel.pin_code)
        self.assertIsNone(self.atm.card)
        self.test_no_card_inserted()

    def test_no_card_inserted(self):
        with self.assertRaises(NoCardInserted):
            self.atm.card_balance()
        with self.assertRaises(NoCardInserted):
            self.atm.get_money(100)