From a991441fb3e1343c9d241cce5067d67fbe4c2df4 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Fri, 30 Jul 2021 16:35:05 +0530 Subject: [PATCH 01/12] TDL-13587: Added inventory item data stream --- tap_shopify/schemas/inventory_items.json | 100 +++++++++++++++++++++++ tap_shopify/streams/__init__.py | 1 + tap_shopify/streams/inventory_iteams.py | 60 ++++++++++++++ tests/base.py | 1 + 4 files changed, 162 insertions(+) create mode 100644 tap_shopify/schemas/inventory_items.json create mode 100644 tap_shopify/streams/inventory_iteams.py diff --git a/tap_shopify/schemas/inventory_items.json b/tap_shopify/schemas/inventory_items.json new file mode 100644 index 00000000..f6ce0838 --- /dev/null +++ b/tap_shopify/schemas/inventory_items.json @@ -0,0 +1,100 @@ +{ + "type": "object", + "properties": { + "id": { + "type": [ + "null", + "integer" + ] + }, + "sku": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "requires_shipping": { + "type": [ + "null", + "boolean" + ] + }, + "cost": { + "type": [ + "null", + "string" + ], + "format": "singer.decimal" + }, + "country_code_of_origin": { + "type": [ + "null", + "string" + ] + }, + "province_code_of_origin": { + "type": [ + "null", + "string" + ] + }, + "harmonized_system_code": { + "type": [ + "null", + "integer" + ] + }, + "tracked": { + "type": [ + "null", + "boolean" + ] + }, + "country_harmonized_system_codes": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "object" + ], + "properties": { + "harmonized_system_code": { + "type": [ + "null", + "string" + ] + }, + "country_code": { + "type": [ + "null", + "string" + ] + } + } + } + }, + "admin_graphql_api_id": { + "type": [ + "null", + "string" + ] + } + } +} \ No newline at end of file diff --git a/tap_shopify/streams/__init__.py b/tap_shopify/streams/__init__.py index dd73ba7a..be7f2ec4 100644 --- a/tap_shopify/streams/__init__.py +++ b/tap_shopify/streams/__init__.py @@ -7,3 +7,4 @@ import tap_shopify.streams.products import tap_shopify.streams.collects import tap_shopify.streams.custom_collections +import tap_shopify.streams.inventory_iteams diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py new file mode 100644 index 00000000..ceca3b8e --- /dev/null +++ b/tap_shopify/streams/inventory_iteams.py @@ -0,0 +1,60 @@ +import shopify +from singer.utils import strftime,strptime_to_utc +from tap_shopify.streams.base import (Stream, shopify_error_handling) +from tap_shopify.context import Context +from singer import utils +import singer + +LOGGER = singer.get_logger() + +RESULTS_PER_PAGE = 250 +MAX_IDS_COUNT = 100 + +class InventoryItems(Stream): + name = 'inventory_items' + replication_object = shopify.InventoryItem + + @shopify_error_handling + def get_inventory_items(self, list_of_ids): + return self.replication_object.find( + ids=list_of_ids, + limit=RESULTS_PER_PAGE) + + def get_objects(self): + selected_parent = Context.stream_objects['products']() + selected_parent.name = "inventory_items_products" + inventory_item_ids = set() + + # Page through all `products`, bookmarking at `inventory_items_products` + for parent_object in selected_parent.get_objects(): + for variant in parent_object.variants: + inventory_item_ids.add(variant.inventory_item_id) + + str_list_of_inventory_item_ids = [str(inventory_item_id) for inventory_item_id in inventory_item_ids] + len_of_inventory_item_ids = len(str_list_of_inventory_item_ids) + + # count the number of iterations as max limit of ids is 100 + no_of_iteration = int(len_of_inventory_item_ids/MAX_IDS_COUNT) + for iteration in range(no_of_iteration + 1): + # 0-99, 100-199, ... + list_of_ids = ",".join(str_list_of_inventory_item_ids[(iteration * MAX_IDS_COUNT):(iteration * MAX_IDS_COUNT)+MAX_IDS_COUNT]) + inventory_items = self.get_inventory_items(list_of_ids) + for inventory_item in inventory_items: + yield inventory_item + + + def sync(self): + bookmark = self.get_bookmark() + max_bookmark = bookmark + for inventory_item in self.get_objects(): + inventory_item_dict = inventory_item.to_dict() + replication_value = strptime_to_utc(inventory_item_dict[self.replication_key]) + if replication_value >= bookmark: + yield inventory_item_dict + + if replication_value > max_bookmark: + max_bookmark = replication_value + + self.update_bookmark(strftime(max_bookmark)) + +Context.stream_objects['inventory_items'] = InventoryItems \ No newline at end of file diff --git a/tests/base.py b/tests/base.py index d35ef8d3..e5adf6f3 100644 --- a/tests/base.py +++ b/tests/base.py @@ -98,6 +98,7 @@ def expected_metadata(self): self.REPLICATION_METHOD: self.INCREMENTAL, self.API_LIMIT: self.DEFAULT_RESULTS_PER_PAGE}, "products": default, + "inventory_items": default, "metafields": meta, "transactions": { self.REPLICATION_KEYS: {"created_at"}, From 52a6e51824983b8ed8f2e762e413f644b888156a Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Fri, 30 Jul 2021 16:40:16 +0530 Subject: [PATCH 02/12] TDL-13587: Updated pagination test --- tests/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/base.py b/tests/base.py index e5adf6f3..fc2d9d17 100644 --- a/tests/base.py +++ b/tests/base.py @@ -98,7 +98,10 @@ def expected_metadata(self): self.REPLICATION_METHOD: self.INCREMENTAL, self.API_LIMIT: self.DEFAULT_RESULTS_PER_PAGE}, "products": default, - "inventory_items": default, + "inventory_items": {self.REPLICATION_KEYS: {"updated_at"}, + self.PRIMARY_KEYS: {"id"}, + self.REPLICATION_METHOD: self.INCREMENTAL, + self.API_LIMIT: 250}, "metafields": meta, "transactions": { self.REPLICATION_KEYS: {"created_at"}, From ffffa797c08911e7a9bc7fab2970428892fa7ca2 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Fri, 30 Jul 2021 17:12:09 +0530 Subject: [PATCH 03/12] TDL-13587: Make pylint happy --- tap_shopify/streams/inventory_iteams.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py index ceca3b8e..a2b8b3d1 100644 --- a/tap_shopify/streams/inventory_iteams.py +++ b/tap_shopify/streams/inventory_iteams.py @@ -2,7 +2,6 @@ from singer.utils import strftime,strptime_to_utc from tap_shopify.streams.base import (Stream, shopify_error_handling) from tap_shopify.context import Context -from singer import utils import singer LOGGER = singer.get_logger() @@ -30,18 +29,19 @@ def get_objects(self): for variant in parent_object.variants: inventory_item_ids.add(variant.inventory_item_id) - str_list_of_inventory_item_ids = [str(inventory_item_id) for inventory_item_id in inventory_item_ids] + str_list_of_inventory_item_ids = [str(inventory_item_id) + for inventory_item_id in inventory_item_ids] len_of_inventory_item_ids = len(str_list_of_inventory_item_ids) # count the number of iterations as max limit of ids is 100 no_of_iteration = int(len_of_inventory_item_ids/MAX_IDS_COUNT) for iteration in range(no_of_iteration + 1): # 0-99, 100-199, ... - list_of_ids = ",".join(str_list_of_inventory_item_ids[(iteration * MAX_IDS_COUNT):(iteration * MAX_IDS_COUNT)+MAX_IDS_COUNT]) + list_of_ids = ",".join(str_list_of_inventory_item_ids[(iteration * MAX_IDS_COUNT): + (iteration * MAX_IDS_COUNT)+MAX_IDS_COUNT]) inventory_items = self.get_inventory_items(list_of_ids) for inventory_item in inventory_items: yield inventory_item - def sync(self): bookmark = self.get_bookmark() @@ -57,4 +57,4 @@ def sync(self): self.update_bookmark(strftime(max_bookmark)) -Context.stream_objects['inventory_items'] = InventoryItems \ No newline at end of file +Context.stream_objects['inventory_items'] = InventoryItems From fd41de24594aa1b65b877083498ac21d1be5ab21 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Fri, 30 Jul 2021 17:16:54 +0530 Subject: [PATCH 04/12] TDL-13587: Mkae pylint happy --- tap_shopify/streams/inventory_iteams.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py index a2b8b3d1..d00b5993 100644 --- a/tap_shopify/streams/inventory_iteams.py +++ b/tap_shopify/streams/inventory_iteams.py @@ -1,8 +1,8 @@ +import singer import shopify from singer.utils import strftime,strptime_to_utc from tap_shopify.streams.base import (Stream, shopify_error_handling) from tap_shopify.context import Context -import singer LOGGER = singer.get_logger() @@ -29,7 +29,7 @@ def get_objects(self): for variant in parent_object.variants: inventory_item_ids.add(variant.inventory_item_id) - str_list_of_inventory_item_ids = [str(inventory_item_id) + str_list_of_inventory_item_ids = [str(inventory_item_id) for inventory_item_id in inventory_item_ids] len_of_inventory_item_ids = len(str_list_of_inventory_item_ids) @@ -42,7 +42,7 @@ def get_objects(self): inventory_items = self.get_inventory_items(list_of_ids) for inventory_item in inventory_items: yield inventory_item - + def sync(self): bookmark = self.get_bookmark() max_bookmark = bookmark From 1827e536437d331bbfea014b80cd4c87af78e059 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Thu, 12 Aug 2021 16:43:41 +0530 Subject: [PATCH 05/12] TDL-13587: Updated the logic of inventory item data collection --- tap_shopify/streams/inventory_iteams.py | 33 ++++++++++--------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py index d00b5993..3734f309 100644 --- a/tap_shopify/streams/inventory_iteams.py +++ b/tap_shopify/streams/inventory_iteams.py @@ -7,39 +7,32 @@ LOGGER = singer.get_logger() RESULTS_PER_PAGE = 250 -MAX_IDS_COUNT = 100 class InventoryItems(Stream): name = 'inventory_items' replication_object = shopify.InventoryItem @shopify_error_handling - def get_inventory_items(self, list_of_ids): + def get_inventory_items(self, inventory_items_ids): return self.replication_object.find( - ids=list_of_ids, + ids=inventory_items_ids, limit=RESULTS_PER_PAGE) def get_objects(self): + selected_parent = Context.stream_objects['products']() - selected_parent.name = "inventory_items_products" - inventory_item_ids = set() + selected_parent.name = "product_variants" - # Page through all `products`, bookmarking at `inventory_items_products` + # Page through all `products`, bookmarking at `product_variants` for parent_object in selected_parent.get_objects(): - for variant in parent_object.variants: - inventory_item_ids.add(variant.inventory_item_id) - - str_list_of_inventory_item_ids = [str(inventory_item_id) - for inventory_item_id in inventory_item_ids] - len_of_inventory_item_ids = len(str_list_of_inventory_item_ids) - - # count the number of iterations as max limit of ids is 100 - no_of_iteration = int(len_of_inventory_item_ids/MAX_IDS_COUNT) - for iteration in range(no_of_iteration + 1): - # 0-99, 100-199, ... - list_of_ids = ",".join(str_list_of_inventory_item_ids[(iteration * MAX_IDS_COUNT): - (iteration * MAX_IDS_COUNT)+MAX_IDS_COUNT]) - inventory_items = self.get_inventory_items(list_of_ids) + + product_variants = parent_object.variants + inventory_items_ids = ",".join([str(product_variant.inventory_item_id) for product_variant in product_variants]) + + # Max limit of IDs is 100 and Max limit of product_variants in one product is also 100 + # hence we can directly pass all inventory_items_ids + inventory_items = self.get_inventory_items(inventory_items_ids) + for inventory_item in inventory_items: yield inventory_item From 7962be2ea2c894ec35ba5b012f7c8b07d34447ad Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Thu, 19 Aug 2021 18:51:20 +0530 Subject: [PATCH 06/12] TDL-13587: Make pylint happy --- tap_shopify/streams/inventory_iteams.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py index 3734f309..5b04b5b9 100644 --- a/tap_shopify/streams/inventory_iteams.py +++ b/tap_shopify/streams/inventory_iteams.py @@ -19,20 +19,21 @@ def get_inventory_items(self, inventory_items_ids): limit=RESULTS_PER_PAGE) def get_objects(self): - + selected_parent = Context.stream_objects['products']() selected_parent.name = "product_variants" # Page through all `products`, bookmarking at `product_variants` for parent_object in selected_parent.get_objects(): - + product_variants = parent_object.variants - inventory_items_ids = ",".join([str(product_variant.inventory_item_id) for product_variant in product_variants]) + inventory_items_ids = ",".join( + [str(product_variant.inventory_item_id) for product_variant in product_variants]) # Max limit of IDs is 100 and Max limit of product_variants in one product is also 100 # hence we can directly pass all inventory_items_ids inventory_items = self.get_inventory_items(inventory_items_ids) - + for inventory_item in inventory_items: yield inventory_item From db9e6ecb715a5438329cd920e425881dd620d090 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Thu, 19 Aug 2021 19:12:44 +0530 Subject: [PATCH 07/12] TDL-13587: Rmoved white space --- tap_shopify/streams/inventory_iteams.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_iteams.py index 5b04b5b9..55fe047a 100644 --- a/tap_shopify/streams/inventory_iteams.py +++ b/tap_shopify/streams/inventory_iteams.py @@ -33,7 +33,7 @@ def get_objects(self): # Max limit of IDs is 100 and Max limit of product_variants in one product is also 100 # hence we can directly pass all inventory_items_ids inventory_items = self.get_inventory_items(inventory_items_ids) - + for inventory_item in inventory_items: yield inventory_item From f2aba466b83f1226c015a248093d0b12de225662 Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Tue, 31 Aug 2021 15:12:41 +0530 Subject: [PATCH 08/12] TDL-13587: Added inventory_items stream in integration test --- tests/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/base.py b/tests/base.py index fc2d9d17..65bc59eb 100644 --- a/tests/base.py +++ b/tests/base.py @@ -281,5 +281,5 @@ def select_all_streams_and_fields(conn_id, catalogs, select_all_fields: bool = T def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.start_date = self.get_properties().get("start_date") - self.store_1_streams = {'custom_collections', 'orders', 'products', 'customers'} - self.store_2_streams = {'abandoned_checkouts', 'collects', 'metafields', 'transactions', 'order_refunds', 'products'} + self.store_1_streams = {'custom_collections', 'orders', 'products', 'customers','inventory_items'} + self.store_2_streams = {'abandoned_checkouts', 'collects', 'metafields', 'transactions', 'order_refunds', 'products','inventory_items'} From 5e1162fd55f005ade907315fd8f08f459ecd9d1b Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Tue, 31 Aug 2021 15:22:05 +0530 Subject: [PATCH 09/12] TDL-13587: Updated pagination tests for inventory_item --- tests/test_pagination.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_pagination.py b/tests/test_pagination.py index 4959a066..311bc818 100644 --- a/tests/test_pagination.py +++ b/tests/test_pagination.py @@ -18,13 +18,16 @@ def name(self): def test_run(self): + # As it can call for max 100 product_variants and + # we can generate only one inventory_item for one product_variants + excepted_streams = {'inventory_items'} with self.subTest(store="store_1"): conn_id = self.create_connection(original_credentials=True) - self.pagination_test(conn_id, self.store_1_streams) + self.pagination_test(conn_id, self.store_1_streams-excepted_streams) with self.subTest(store="store_2"): conn_id = self.create_connection(original_properties=False, original_credentials=False) - self.pagination_test(conn_id, self.store_2_streams) + self.pagination_test(conn_id, self.store_2_streams-excepted_streams) def pagination_test(self, conn_id, testable_streams): From e9e5166dd86fd68781c7d5144e86982d867dbe0d Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Wed, 1 Sep 2021 18:55:42 +0530 Subject: [PATCH 10/12] TDL-13587: Added unittests for inventory item data --- tests/unittests/test_inventory_items.py | 92 +++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 tests/unittests/test_inventory_items.py diff --git a/tests/unittests/test_inventory_items.py b/tests/unittests/test_inventory_items.py new file mode 100644 index 00000000..76721c44 --- /dev/null +++ b/tests/unittests/test_inventory_items.py @@ -0,0 +1,92 @@ +import unittest +from unittest import mock +from singer.utils import strptime_to_utc +from tap_shopify.context import Context + +INVENTORY_ITEM_OBJECT = Context.stream_objects['inventory_items']() + +class Product(): + def __init__(self, id, variants): + self.id = id + self.variants = variants + +class ProductVariant(): + def __init__(self, id, inventory_item_id): + self.id = id + self.inventory_item_id = inventory_item_id + +class InventoryItems(): + def __init__(self, id, updated_at): + self.id = id + self.updated_at = updated_at + + def to_dict(self): + return {"id": self.id, "updated_at": self.updated_at} + +ITEM_1 = InventoryItems("i11", "2021-08-11T01:57:05-04:00") +ITEM_2 = InventoryItems("i12", "2021-08-12T01:57:05-04:00") +ITEM_3 = InventoryItems("i21", "2021-08-13T01:57:05-04:00") +ITEM_4 = InventoryItems("i22", "2021-08-14T01:57:05-04:00") + +class TestInventoryItems(unittest.TestCase): + + @mock.patch("tap_shopify.streams.base.Stream.get_objects") + @mock.patch("tap_shopify.streams.inventory_items.InventoryItems.get_inventory_items") + def test_get_objects_with_product_variant(self, mock_get_inventory_items, mock_parent_object): + + expected_inventory_items = [ITEM_1, ITEM_2, ITEM_3, ITEM_4] + product1 = Product("p1", [ProductVariant("v11", "i11"), ProductVariant("v21", "i21")]) + product2 = Product("p2", [ProductVariant("v12", "i12"), ProductVariant("v22", "i22")]) + + mock_get_inventory_items.side_effect = [[ITEM_1, ITEM_2], [ITEM_3, ITEM_4]] + mock_parent_object.return_value = [product1, product2] + + actual_inventory_items = list(INVENTORY_ITEM_OBJECT.get_objects()) + + #Verify that it returns inventory_item of all product variant + self.assertEqual(actual_inventory_items, expected_inventory_items) + + + @mock.patch("tap_shopify.streams.base.Stream.get_objects") + @mock.patch("tap_shopify.streams.inventory_items.InventoryItems.get_inventory_items") + def test_get_objects_with_product_but_no_variant(self, mock_get_inventory_items, mock_parent_object): + + expected_inventory_items = [ITEM_3, ITEM_4] + + #Product1 contain no variant + product1 = Product("p1", []) + + product2 = Product("p2", [ProductVariant("v12", "i12"), ProductVariant("v22", "i22")]) + mock_parent_object.return_value = [product1, product2] + + mock_get_inventory_items.side_effect = [[], [ITEM_3, ITEM_4]] + + actual_inventory_items = list(INVENTORY_ITEM_OBJECT.get_objects()) + #Verify that it returns inventory_item of existing product variant + self.assertEqual(actual_inventory_items, expected_inventory_items) + + + @mock.patch("tap_shopify.streams.base.Stream.get_objects") + @mock.patch("tap_shopify.streams.inventory_items.InventoryItems.get_inventory_items") + def test_get_objects_with_no_product(self, mock_get_inventory_items, mock_parent_object): + + #No product exist + mock_parent_object.return_value = [] + expected_inventory_items = [] + + actual_inventory_items = list(INVENTORY_ITEM_OBJECT.get_objects()) + self.assertEqual(actual_inventory_items, expected_inventory_items) + + @mock.patch("tap_shopify.streams.base.Stream.get_bookmark") + @mock.patch("tap_shopify.streams.inventory_items.InventoryItems.get_objects") + def test_sync(self, mock_get_objects, mock_get_bookmark): + + expected_sync = [ITEM_3.to_dict(), ITEM_4.to_dict()] + mock_get_objects.return_value = [ITEM_1, ITEM_2, ITEM_3, ITEM_4] + + mock_get_bookmark.return_value = strptime_to_utc("2021-08-13T01:05:05-04:00") + + actual_sync = list(INVENTORY_ITEM_OBJECT.sync()) + + #Verify that only 2 record syncs + self.assertEqual(actual_sync, expected_sync) \ No newline at end of file From 02cc04f617359ee856209e87cd01309f597eaf4c Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Wed, 1 Sep 2021 19:15:20 +0530 Subject: [PATCH 11/12] TDL-13587: Removed typo error --- tap_shopify/streams/__init__.py | 2 +- tap_shopify/streams/{inventory_iteams.py => inventory_items.py} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tap_shopify/streams/{inventory_iteams.py => inventory_items.py} (100%) diff --git a/tap_shopify/streams/__init__.py b/tap_shopify/streams/__init__.py index be7f2ec4..5f6c2f60 100644 --- a/tap_shopify/streams/__init__.py +++ b/tap_shopify/streams/__init__.py @@ -7,4 +7,4 @@ import tap_shopify.streams.products import tap_shopify.streams.collects import tap_shopify.streams.custom_collections -import tap_shopify.streams.inventory_iteams +import tap_shopify.streams.inventory_items diff --git a/tap_shopify/streams/inventory_iteams.py b/tap_shopify/streams/inventory_items.py similarity index 100% rename from tap_shopify/streams/inventory_iteams.py rename to tap_shopify/streams/inventory_items.py From 4b8a979ba631490972d5c882b7908dad2906489e Mon Sep 17 00:00:00 2001 From: dbshah1212 Date: Thu, 30 Sep 2021 12:10:14 +0530 Subject: [PATCH 12/12] TDL-13587: Updated readme --- README.md | 1 + tests/test_pagination.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 46a9223d..5c73cc45 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ This tap: - [Orders](https://help.shopify.com/en/api/reference/orders) - [Products](https://help.shopify.com/en/api/reference/products) - [Transactions](https://help.shopify.com/en/api/reference/orders/transaction) + - [Inventory Item](https://help.shopify.com/en/api/reference/inventory/inventoryitem) - Outputs the schema for each resource - Incrementally pulls data based on the input state - When Metafields are selected, this tap will sync the Shopify store's top-level Metafields and any additional Metafields for selected tables that also have them (ie: Orders, Products, Customers) diff --git a/tests/test_pagination.py b/tests/test_pagination.py index 7d0fb89b..a2432125 100644 --- a/tests/test_pagination.py +++ b/tests/test_pagination.py @@ -27,11 +27,11 @@ def test_run(self): excepted_streams = {'inventory_items'} with self.subTest(store="store_1"): conn_id = self.create_connection(original_credentials=True) - self.pagination_test(conn_id, self.store_1_streams-excepted_streams) + self.pagination_test(conn_id, self.store_1_streams - excepted_streams) with self.subTest(store="store_2"): conn_id = self.create_connection(original_properties=False, original_credentials=False) - self.pagination_test(conn_id, self.store_2_streams-excepted_streams) + self.pagination_test(conn_id, self.store_2_streams - excepted_streams) def pagination_test(self, conn_id, testable_streams):