|
23 | 23 | # |
24 | 24 |
|
25 | 25 | from datetime import date |
| 26 | +import pendulum |
26 | 27 |
|
27 | 28 | from source_google_ads.google_ads import GoogleAds |
28 | 29 |
|
| 30 | +from source_google_ads.streams import chunk_date_range |
| 31 | +from source_google_ads.streams import IncrementalGoogleAdsStream |
| 32 | + |
29 | 33 | SAMPLE_SCHEMA = { |
30 | 34 | "properties": { |
31 | 35 | "segment.date": { |
@@ -115,10 +119,22 @@ def test_get_fields_from_schema(): |
115 | 119 | response = GoogleAds.get_fields_from_schema(SAMPLE_SCHEMA) |
116 | 120 | assert response == ["segment.date"] |
117 | 121 |
|
| 122 | +def test_interval_chunking(): |
| 123 | + mock_intervals = [{'segments.date': '2021-05-18'}, {'segments.date': '2021-06-18'}, {'segments.date': '2021-07-18'}] |
| 124 | + intervals = chunk_date_range('2021-06-01', 14, 'segments.date', '2021-08-15') |
| 125 | + |
| 126 | + assert mock_intervals == intervals |
| 127 | + |
| 128 | +def test_get_date_params(): |
| 129 | + mock_start_date = '2021-05-19' # Please note that this is equal to inputted stream_slice start date + 1 day |
| 130 | + mock_end_date = '2021-06-18' |
| 131 | + start_date, end_date = IncrementalGoogleAdsStream.get_date_params(stream_slice={'segments.date': '2021-05-18'}, cursor_field='segments.date', end_date=pendulum.parse('2021-08-15')) |
| 132 | + |
| 133 | + assert mock_start_date == start_date and mock_end_date == end_date |
118 | 134 |
|
119 | 135 | def test_convert_schema_into_query(): |
120 | 136 | report_name = "ad_group_ad_report" |
121 | | - query = "SELECT segment.date FROM ad_group_ad WHERE segments.date > '2020-01-01' AND segments.date < '2020-03-01' ORDER BY segments.date ASC" |
| 137 | + query = "SELECT segment.date FROM ad_group_ad WHERE segments.date >= '2020-01-01' AND segments.date <= '2020-03-01' ORDER BY segments.date ASC" |
122 | 138 | response = GoogleAds.convert_schema_into_query(SAMPLE_SCHEMA, report_name, "2020-01-01", "2020-03-01", "segments.date") |
123 | 139 | assert response == query |
124 | 140 |
|
|
0 commit comments