From bfa7695c97981def1ca7457f9f566e5410b0972f Mon Sep 17 00:00:00 2001 From: "ht.albert" Date: Tue, 19 Feb 2019 23:58:57 +0300 Subject: [PATCH 1/3] Added test on fulfillment model --- tests/test_models.py | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tests/test_models.py diff --git a/tests/test_models.py b/tests/test_models.py new file mode 100644 index 0000000..a197107 --- /dev/null +++ b/tests/test_models.py @@ -0,0 +1,58 @@ +import json +import os +from collections import namedtuple + +from mock import MagicMock, patch + +from connect.config import Config +from connect.resource import FulfillmentResource + +response = namedtuple('Response', ('ok', 'content')) + + +def _get_response_ok(): + response.ok = True + with open(os.path.join(os.path.dirname(__file__), 'response.json')) as file: + response.content = file.read() + + return response + + +@patch('requests.get', MagicMock(return_value=_get_response_ok())) +def test_create_model_from_response(): + Config(api_key='ApiKey XXXX:YYYYY', api_url='http://localhost:8080/api/public/v1/') + + requests = FulfillmentResource().list() + request_obj = FulfillmentResource().get(pk='PR-000-000-000') + + assert requests[0].id == request_obj.id + content = json.loads(response.content)[0] + assert request_obj.id == content['id'] + assert request_obj.contract.id == content['contract']['id'] + assert request_obj.marketplace.id == content['marketplace']['id'] + assert request_obj.asset.id == content['asset']['id'] + assert request_obj.asset.product.id == content['asset']['product']['id'] + + try: + ( + request_obj.contract, + request_obj.contract.id, + request_obj.marketplace, + request_obj.marketplace.id, + request_obj.type, + request_obj.updated, + request_obj.created, + request_obj.reason, + request_obj.activation_key, + request_obj.status, + request_obj.asset.external_id, + request_obj.asset.external_uid, + request_obj.asset.product, + request_obj.asset.product.id, + request_obj.asset.connection, + request_obj.asset.items, + request_obj.asset.params, + request_obj.asset.tiers, + ) + except AttributeError: + assert False, 'Incorrectly initialized model ' From 44209fa40750f1c469f8008862a6766f615d29f8 Mon Sep 17 00:00:00 2001 From: "ht.albert" Date: Wed, 20 Feb 2019 00:00:35 +0300 Subject: [PATCH 2/3] Added response.json --- tests/response.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/response.json diff --git a/tests/response.json b/tests/response.json new file mode 100644 index 0000000..4482bbf --- /dev/null +++ b/tests/response.json @@ -0,0 +1 @@ +[{"activation_key": "###tile", "asset": {"connection": {"id": "CT-9344-000", "provider": {"id": "PA-063-000", "name": "Connection name"}, "type": "production", "vendor": {"id": "VA-691-000", "name": "Vendor Name"}}, "external_id": "1001000", "external_uid": "f90e2ed2-b267-4831-93e6-a6b06874e000", "id": "AS-392-283-000-0", "items": [{"id": "string_id", "mpn": "mpn params", "old_quantity": "0", "quantity": "0"}], "params": [{"description": "Activation Code", "id": "activationCode", "name": "Activation Code", "type": "text", "value": "value param", "value_choices": [], "value_error": ""}], "product": {"id": "CN-631-322-000", "name": "ProductName"}, "tiers": {"customer": {"contact_info": {"address_line1": "street A", "address_line2": "2 2", "city": "Moscow", "contact": {"email": "test@email.com", "first_name": "First Name", "last_name": "Last Name", "phone_number": {"area_code": "", "country_code": "+7", "extension": "", "phone_number": "8901298403"}}, "country": "es", "postal_code": "08000", "state": ""}, "external_id": "1001000", "id": "TA-0-7304-8514-7000", "name": "Name"}, "tier1": {"contact_info": {"address_line1": "street B", "address_line2": "", "city": "Saint-Petersburg", "contact": {"email": "test2@mail.com", "first_name": "First Name", "last_name": "Last Name", "phone_number": {"area_code": "123", "country_code": "+34", "extension": "", "phone_number": "753000"}}, "country": "es", "postal_code": "28000", "state": ""}, "external_id": "1000000", "id": "TA-0-7042-5000-3000", "name": "Name"}}}, "contract": {"id": "CRD-00000-00000-00000", "name": "ACME Distribution Contract"}, "created": "2019-02-19T19:23:07.209244+00:00", "id": "PR-5852-1608-0000", "marketplace": {"icon": "/media/PA-063-000/marketplaces/MP-77000/icon.svg", "id": "MP-77000", "name": "MP Spain"}, "reason": "", "status": "approved", "type": "purchase", "updated": "2019-02-19T19:28:11.053922+00:00"}] From b8290a49f6d0b52d961af180c595495a509276ca Mon Sep 17 00:00:00 2001 From: "ht.albert" Date: Wed, 20 Feb 2019 00:10:01 +0300 Subject: [PATCH 3/3] coverage files --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ee99cee..97e56cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ install: script: - flake8 connect -- pytest --cov-report=xml --cov=./ +- pytest --cov-report=xml --cov=./connect after_success: - bash <(curl -s https://codecov.io/bash)