class FacadeTests(TestCase, XmlTestingMixin): def setUp(self): self.facade = Facade() def test_zero_amount_raises_exception(self): card = Bankcard(card_number=CARD_VISA, expiry_date='1015', name="Frankie", cvv="123", start_date="1010") with self.assertRaises(UnableToTakePayment): self.facade.authorise('1000', 0, card) def test_zero_amount_for_complete_raises_exception(self): with self.assertRaises(UnableToTakePayment): self.facade.complete('1000', 0, '1234') def test_zero_amount_for_purchase_raises_exception(self): with self.assertRaises(UnableToTakePayment): self.facade.purchase('1000', 0) def test_purchase_without_billing_id_or_card_raises_exception(self): with self.assertRaises(ValueError): self.facade.purchase('1000', 1.23) def test_zero_amount_for_refund_raises_exception(self): with self.assertRaises(UnableToTakePayment): self.facade.refund('1000', 0, '1234') def test_merchant_reference_format(self): merchant_ref = self.facade._get_merchant_reference('1000', AUTH) self.assertRegexpMatches(merchant_ref, r'^\d+_[A-Z]+_\d+_\d{4}$')