diff --git a/retailcrm/versions/v5.py b/retailcrm/versions/v5.py index 55722e5..8f961bb 100644 --- a/retailcrm/versions/v5.py +++ b/retailcrm/versions/v5.py @@ -1381,6 +1381,19 @@ def inventories_upload(self, offers, site=None): return self.post('/store/inventories/upload') + def offers(self, filters=None, limit=20, page=1): + """ + :param filters: object + :param limit: integer + :param page: integer + :return: Response + """ + self.parameters['filter'] = filters + self.parameters['limit'] = limit + self.parameters['page'] = page + + return self.get('/store/offers') + def prices_upload(self, prices): """ :param prices: array of objects diff --git a/tests/v5_tests.py b/tests/v5_tests.py index faf56b1..81129a0 100644 --- a/tests/v5_tests.py +++ b/tests/v5_tests.py @@ -4078,6 +4078,60 @@ def test_inventories_upload(self): self.assertTrue(response.is_successful(), True) self.assertTrue(response.get_status_code() < 400, True) + @pook.on + def test_offers(self): + """ + v5 Test method offers + """ + + (pook.get(os.getenv('RETAILCRM_URL') + '/api/v5/store/offers') + .headers({'X-API-KEY': os.getenv('RETAILCRM_KEY')}) + .params({'filter[site]': 'https://retailcrm.pro'}) + .reply(200) + .headers(self.__header) + .json( + { + 'success': 'true', + 'pagination': { + 'limit': 20, + 'totalCount': 1, + 'currentPage': 1, + 'totalPageCount': 1 + }, + 'offers': [ + { + 'images': [], + 'id': 33937, + 'site': 'https://retailcrm.pro', + 'name': 'Shirt', + 'article': 'SHIRT-BLACK', + 'prices': { + "priceType": "base", + "price": 4, + "ordering": 100, + "currency": "EUR" + }, + 'purchasePrice': 1, + 'vatRate': 'none', + 'product': {}, + 'properties': { + 'color': 'black' + }, + 'quantity': 10, + 'active': True, + 'barcode': '12345' + } + ] + } + ) + ) + + response = self.client.offers({'site': 'https://retailcrm.pro'}) + pook.off() + + self.assertTrue(response.is_successful(), True) + self.assertTrue(response.get_status_code() < 400, True) + @pook.on def test_prices_upload(self): """