def test_request_setters(self): request = ReceiptRequest({ 'type': ReceiptType.PAYMENT, 'send': True, 'customer': { 'email': '*****@*****.**', 'phone': '79990000000' }, 'items': [{ 'description': 'Product 1', 'quantity': 2.0, 'amount': { 'value': 250.0, 'currency': Currency.RUB }, 'vat_code': 2 }, { 'description': 'Product 2', 'quantity': 1.0, 'amount': { 'value': 100.0, 'currency': Currency.RUB }, 'vat_code': 2 }], 'settlements': [{ 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } }], 'tax_system_code': 1, 'payment_id': '215d8da0-000f-50be-b000-0003308c89be' }) self.assertIsInstance(request.customer, ReceiptCustomer) self.assertIsInstance(request.items, list) self.assertIsInstance(request.settlements, list) with self.assertRaises(TypeError): request.customer = 'invalid customer' with self.assertRaises(TypeError): request.items = 'invalid items' with self.assertRaises(TypeError): request.settlements = 'invalid settlements'
def create(cls, params, idempotency_key=None): """ Create receipt :param params: data passed to API :param idempotency_key: :return: ReceiptResponse """ instance = cls() path = cls.base_path if not idempotency_key: idempotency_key = uuid.uuid4() headers = {'Idempotence-Key': str(idempotency_key)} if isinstance(params, dict): params_object = ReceiptRequest(params) elif isinstance(params, ReceiptRequest): params_object = params else: raise TypeError('Invalid params value type') response = instance.client.request(HttpVerb.POST, path, None, headers, params_object) return ReceiptResponse(response)
def test_create(self): self.maxDiff = None with patch('yandex_checkout.client.ApiClient.request') as request_mock: request_mock.return_value = { "id": "rt_1da5c87d-0984-50e8-a7f3-8de646dd9ec9", "type": "payment", "refund_id": "215d8da0-000f-50be-b000-0003308c89be", "fiscal_document_number": "3986", "fiscal_storage_number": "9288000100115785", "fiscal_attribute": "2617603921", "registered_at": "2019-05-13T17:56:00.000+03:00", "fiscal_provider_id": "fd9e9404-eaca-4000-8ec9-dc228ead2345", "tax_system_code": 1, "receipt_registration": 'succeeded', "items": None, "settlements": [ { "type": "cashless", "amount": { "value": "45.67", "currency": "RUB" } } ], "on_behalf_of": "string" } params = { 'type': ReceiptType.PAYMENT, 'send': True, 'email': '*****@*****.**', 'phone': '79990000000', 'items': [ { 'description': 'Product 1', 'quantity': 2.0, 'amount': Amount({ 'value': 250.0, 'currency': Currency.RUB }), 'vat_code': 2, 'payment_mode': 'full_payment', 'payment_subject': 'commodity', 'country_of_origin_code': 'CN', 'product_code': '00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00', 'customs_declaration_number': '10714040/140917/0090376', 'excise': '20.00', 'supplier': { 'name': 'string', 'phone': 'string', 'inn': 'string' } }, { 'description': 'Product 2', 'quantity': 1.0, 'amount': { 'value': 100.0, 'currency': Currency.RUB }, 'vat_code': 2, 'supplier': ReceiptItemSupplier({ 'name': 'string', 'phone': 'string', 'inn': 'string' }) } ], 'settlements': [ { 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } } ], 'tax_system_code': 1, 'payment_id': '215d8da0-000f-50be-b000-0003308c89be', 'on_behalf_of': 'string' } rec = Receipt.create(params) self.assertIsInstance(rec, ReceiptResponse) self.assertEqual(rec.type, ReceiptType.PAYMENT) request = ReceiptRequest() request.type = ReceiptType.PAYMENT request.send = True request.customer = ReceiptCustomer({'phone': '79990000000', 'email': '*****@*****.**'}) request.items.append( ReceiptItemRequest({ "description": "Product 1", "quantity": 2.0, "amount": Amount({'value': 250.0, 'currency': Currency.RUB}), "vat_code": 2 })) request.items.append( ReceiptItemRequest({ "description": "Product 2", "quantity": 1.0, "amount": Amount({'value': 100.0, 'currency': Currency.RUB}), "vat_code": 2 })) request.settlements.append( Settlement({ 'type': SettlementType.CASHLESS, 'amount': Amount({'value': 250.0, 'currency': Currency.RUB}) })) request.tax_system_code = 1 request.payment_id = '215d8da0-000f-50be-b000-0003308c89be' rec = Receipt.create(request) self.assertIsInstance(rec, ReceiptResponse) self.assertEqual(rec.type, "payment") with self.assertRaises(TypeError): Receipt.create('invalid data')
def test_request_setters(self): request = ReceiptRequest({ 'type': ReceiptType.PAYMENT, 'send': True, 'email': '*****@*****.**', 'phone': '79990000000', 'items': [{ 'description': 'Product 1', 'quantity': 2.0, 'amount': Amount({ 'value': 250.0, 'currency': Currency.RUB }), 'vat_code': 2, 'payment_mode': 'full_payment', 'payment_subject': 'commodity', 'country_of_origin_code': 'CN', 'product_code': '00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00', 'customs_declaration_number': '10714040/140917/0090376', 'excise': '20.00', 'supplier': { 'name': 'string', 'phone': 'string', 'inn': 'string' } }, { 'description': 'Product 2', 'quantity': 1.0, 'amount': { 'value': 100.0, 'currency': Currency.RUB }, 'vat_code': 2, 'supplier': ReceiptItemSupplier({ 'name': 'string', 'phone': 'string', 'inn': 'string' }) }], 'settlements': [{ 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } }], 'tax_system_code': 1, 'payment_id': '215d8da0-000f-50be-b000-0003308c89be', 'on_behalf_of': 'string' }) self.assertIsInstance(request.customer, ReceiptCustomer) self.assertIsInstance(request.items, list) self.assertIsInstance(request.settlements, list) with self.assertRaises(TypeError): request.items[0].supplier = 'invalid supplier' with self.assertRaises(TypeError): request.items[0].amount = 'invalid amount' with self.assertRaises(TypeError): request.customer = 'invalid customer' with self.assertRaises(TypeError): request.items = 'invalid items' with self.assertRaises(TypeError): request.items = ['invalid item'] with self.assertRaises(TypeError): request.settlements = 'invalid settlements' with self.assertRaises(TypeError): request.settlements = ['invalid settlement'] with self.assertRaises(TypeError): request.send = 'invalid send' with self.assertRaises(TypeError): request.tax_system_code = 'invalid tax_system_code'
def test_request_validate(self): request = ReceiptRequest() with self.assertRaises(ValueError): request.validate() request.type = ReceiptType.PAYMENT with self.assertRaises(ValueError): request.validate() request.send = True with self.assertRaises(ValueError): request.validate() request.customer = ReceiptCustomer({ 'phone': '79990000000', 'email': '*****@*****.**' }) with self.assertRaises(ValueError): request.validate() request.items = [ ReceiptItemRequest({ "description": "Product 1", "quantity": 2.0, "amount": { "value": 250.0, "currency": Currency.RUB }, "vat_code": 2 }), ReceiptItemRequest({ "description": "Product 2", "quantity": 1.0, "amount": { "value": 100.0, "currency": Currency.RUB }, "vat_code": 2 }) ] with self.assertRaises(ValueError): request.validate() request.settlements = [ Settlement({ 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } }) ] with self.assertRaises(ValueError): request.validate() request.tax_system_code = 1 with self.assertRaises(ValueError): request.validate() request.refund_id = '215d8da0-000f-50be-b000-0003308c89be' with self.assertRaises(ValueError): request.validate() request.type = ReceiptType.REFUND request.payment_id = '215d8da0-000f-50be-b000-0003308c89be' with self.assertRaises(ValueError): request.validate() request.items = None request.settlements = None with self.assertRaises(ValueError): request.validate()
def test_request_cast(self): request = ReceiptRequest() request.type = ReceiptType.PAYMENT request.send = True request.customer = ReceiptCustomer({ 'phone': '79990000000', 'email': '*****@*****.**' }) request.items = [ ReceiptItemRequest({ "description": "Product 1", "quantity": 2.0, "amount": { "value": 250.0, "currency": Currency.RUB }, "vat_code": 2 }), ReceiptItemRequest({ "description": "Product 2", "quantity": 1.0, "amount": { "value": 100.0, "currency": Currency.RUB }, "vat_code": 2 }) ] request.settlements = [ Settlement({ 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } }) ] request.tax_system_code = 1 request.payment_id = '215d8da0-000f-50be-b000-0003308c89be' self.assertEqual( { 'type': ReceiptType.PAYMENT, 'send': True, 'customer': { 'email': '*****@*****.**', 'phone': '79990000000' }, 'email': '*****@*****.**', 'phone': '79990000000', 'items': [{ 'description': 'Product 1', 'quantity': 2.0, 'amount': { 'value': 250.0, 'currency': Currency.RUB }, 'vat_code': 2 }, { 'description': 'Product 2', 'quantity': 1.0, 'amount': { 'value': 100.0, 'currency': Currency.RUB }, 'vat_code': 2 }], 'settlements': [{ 'type': SettlementType.CASHLESS, 'amount': { 'value': 250.0, 'currency': Currency.RUB } }], 'tax_system_code': 1, 'payment_id': '215d8da0-000f-50be-b000-0003308c89be' }, dict(request))
def __init__(self): self.__request = ReceiptRequest()