def test_invoice(self, post_method): api = self.make_one('MOCK_API_KEY', endpoint='http://localhost') customer = Customer(api, dict(guid='MOCK_CUSTOMER_GUID')) mock_invoice_data = dict( guid='MOCK_INVOICE_GUID', ) mock_response = mock.Mock( json=lambda: mock_invoice_data, status_code=200, ) post_method.return_value = mock_response invoice = customer.invoice( amount='5566', title='I want you bankrupt invoice', funding_instrument_uri='MOCK_INSTRUMENT_URI', appears_on_statement_as='hi there', items=[ dict(name='foo', amount=1234), dict(type='debit', name='bar', amount=56, quantity=78, volume=90, unit='unit'), ], adjustments=[ dict(amount=-100, reason='A Lannister always pays his debts!'), dict(amount=20, reason='you owe me'), ], ) self.assertEqual(invoice.guid, 'MOCK_INVOICE_GUID') post_method.assert_called_once_with( 'http://localhost/v1/invoices', data=dict( customer_guid='MOCK_CUSTOMER_GUID', funding_instrument_uri='MOCK_INSTRUMENT_URI', title='I want you bankrupt invoice', appears_on_statement_as='hi there', amount='5566', # item1 item_name0='foo', item_amount0='1234', # item2 item_type1='debit', item_name1='bar', item_amount1='56', item_quantity1='78', item_volume1='90', item_unit1='unit', # adjustment1 adjustment_amount0='-100', adjustment_reason0='A Lannister always pays his debts!', # adjustment2 adjustment_amount1='20', adjustment_reason1='you owe me', ), auth=('MOCK_API_KEY', ''), )
def test_invoice_with_duplicate_external_id(self, post_method): api = self.make_one('MOCK_API_KEY', endpoint='http://localhost') customer = Customer(api, dict(guid='MOCK_CUSTOMER_GUID')) mock_invoice_data = dict( guid='MOCK_INVOICE_GUID', ) mock_response = mock.Mock( json=lambda: mock_invoice_data, status_code=409, content='Duplicate', ) post_method.return_value = mock_response with self.assertRaises(DuplicateExternalIDError): customer.invoice( amount='5566', funding_instrument_uri='MOCK_URI', external_id='duplaite one', )