diff --git a/odoo_somconnexio_python_client/resources/product_catalog.py b/odoo_somconnexio_python_client/resources/product_catalog.py index 18e560d47627a89aea09bf097581a8341058d1f1..b705e51b46937c625cdcad60f98f3ac1b545b97b 100644 --- a/odoo_somconnexio_python_client/resources/product_catalog.py +++ b/odoo_somconnexio_python_client/resources/product_catalog.py @@ -23,11 +23,11 @@ class ProductCatalog: self.products = [Product(**product) for product in products] @classmethod - def search(cls, code="", category="", lang="ca"): + def search(cls, code="", category="", lang="ca", product_code=""): headers = {'Accept-Language': lang} response_data = Client().get( "{}".format(cls._url_path), - params={"code": code, "categ": category}, + params={"code": code, "categ": category, "product_code": product_code}, extra_headers=headers ) diff --git a/tests/resources/cassettes/test_product_catalog/TariffTests.test_search_available_products_for_product_code.yaml b/tests/resources/cassettes/test_product_catalog/TariffTests.test_search_available_products_for_product_code.yaml new file mode 100644 index 0000000000000000000000000000000000000000..793e929706fda1a775ff96a33b3e9f9daa082a20 --- /dev/null +++ b/tests/resources/cassettes/test_product_catalog/TariffTests.test_search_available_products_for_product_code.yaml @@ -0,0 +1,47 @@ +interactions: +- request: + body: null + headers: + API-KEY: + - '****' + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Accept-Language: + - ca + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: http://odoo-sc.local:8069/api/product-catalog?code=&categ=&product_code=SE_SC_REC_BA_F_100 + response: + body: + string: '{"pricelists": [{"code": "21IVA", "products": [ + {"code": "SE_SC_REC_BA_F_100", "name": "Fibra 100Mb amb fix", "price": 34.0, + "category": "fiber", "minutes": null, "data": null, "bandwidth": 100, "available_for": + ["member"]}, {"code": "SE_SC_REC_BA_F_1024", "name": "Fibra 1Gb", "price": + 58.0, "category": "fiber", "minutes": null, "data": null, "bandwidth": 1000, + "available_for": ["member"]}, {"code": "SE_SC_REC_BA_F_600", "name": "Fibra + 600Mb", "price": 43.0, "category": "fiber", "minutes": null, "data": null, + "bandwidth": 600, "available_for": ["member"]}]}]}' + headers: + Access-Control-Allow-Methods: + - GET + Access-Control-Allow-Origin: + - None + Content-Length: + - '2873' + Content-Type: + - application/json + Cookie: '****' + Date: + - Tue, 8 Apr 2022 11:25:49 GMT + Server: + - Werkzeug/0.11.15 Python/3.7.7 + Set-Cookie: '****' + status: + code: 200 + message: OK +version: 1 diff --git a/tests/resources/test_product_catalog.py b/tests/resources/test_product_catalog.py index 8c24bc71210f923223fc77de3cf7ec19eb248d04..fa75cca6e5b4b053c315ede431fa8a2d3217f9cf 100644 --- a/tests/resources/test_product_catalog.py +++ b/tests/resources/test_product_catalog.py @@ -75,3 +75,22 @@ class TariffTests(unittest.TestCase): "Ilimitadas 10 GB", es_product_names ) + + @pytest.mark.vcr() + def test_search_available_products_for_product_code(self): + """ For product fibra 100Mb only are available other Fiber products. """ + pricelists = ProductCatalog.search(product_code="SE_SC_REC_BA_F_100") + product_codes = [p.code for p in pricelists[0].products] + + self.assertIn( + "SE_SC_REC_BA_F_1024", + product_codes + ) + self.assertIn( + "SE_SC_REC_BA_F_600", + product_codes + ) + self.assertNotIn( + "SE_SC_REC_BA_ADSL_SF", + product_codes + )