1
0
mirror of synced 2026-01-10 09:04:48 -05:00
Files
airbyte/airbyte-integrations/connectors/source-monday/unit_tests/test_components.py
Anatolii Yatsuk 507ad698f3 Source Monday: Add incremental sync for Items and Boards stream (#27944)
* Add incremental sync for the Boards and Items streams using Activity logs

---------

Co-authored-by: Oleksandr Bazarnov <oleksandr.bazarnov@globallogic.com>
Co-authored-by: Sherif A. Nada <snadalive@gmail.com>
2023-07-13 12:13:47 +03:00

56 lines
1.9 KiB
Python

#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from unittest.mock import MagicMock, Mock
import pytest
from airbyte_cdk.sources.declarative.partition_routers.substream_partition_router import ParentStreamConfig
from airbyte_cdk.sources.streams import Stream
from source_monday.components import IncrementalSingleSlice, IncrementalSubstreamSlicer
def test_slicer():
date_time_dict = {"updated_at": 1662459010}
slicer = IncrementalSingleSlice(config={}, parameters={}, cursor_field="updated_at")
slicer.close_slice(date_time_dict, date_time_dict)
assert slicer.get_stream_state() == date_time_dict
assert slicer.get_request_headers() == {}
assert slicer.get_request_body_data() == {}
assert slicer.get_request_body_json() == {}
@pytest.mark.parametrize(
"last_record, expected, records",
[
(
{"first_stream_cursor": 1662459010},
{'parent_stream_name': {'parent_cursor_field': 1662459010}, 'first_stream_cursor': 1662459010},
[{"first_stream_cursor": 1662459010}],
),
(None, {}, []),
],
)
def test_sub_slicer(last_record, expected, records):
parent_stream = Mock(spec=Stream)
parent_stream.name = "parent_stream_name"
parent_stream.cursor_field = "parent_cursor_field"
parent_stream.stream_slices.return_value = [{"a slice": "value"}]
parent_stream.read_records = MagicMock(return_value=records)
parent_config = ParentStreamConfig(
stream=parent_stream,
parent_key="id",
partition_field="first_stream_id",
parameters={},
config={},
)
slicer = IncrementalSubstreamSlicer(
config={}, parameters={}, cursor_field="first_stream_cursor", parent_stream_configs=[parent_config], nested_items_per_page=10
)
stream_slice = next(slicer.stream_slices()) if records else {}
slicer.close_slice(stream_slice, last_record)
assert slicer.get_stream_state() == expected