-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* TDL-19742 Run discover mode if catalog is not given in sync mode (#85) * TDL-19742 Run discover mode if catalog is not given in sync mode * Add call count assertion and remove unused import Co-authored-by: Jay Tilala <jay.tilala@CDSYS.LOCAL> * TDL-14450: fix inconsistency of empty cell for boolean (#84) * handled empty value scenario for the booleans * Added unit test for null value in boolean * Removed workaround from the integration test Co-authored-by: harshpatel4crest <harsh.patel4@crestdatasys.com> * TDL-14449: Syncs do not parse datetime values in number datatyped columns as strings (#83) * updated the code to store datetime values as string in numberType column * updated the test cases and handled boolean in numberType * updated code for handling numberType values * updated code to handle number format and int exponential values * added comments for transforming number format data * updated datatype integration test * resolved comments * resolved comments * updated comments * updated comments * handled duplicate code in transform numberType values * added comments * added logger and removed redundant arg * updated unittest and code * updated comment * updated bug id test case * TDL-19029: Add support for data collection from the shared drives (#80) * TDL-17517 - Add missing tap-tester cases (#65) * Added missing test cases * Updated standard bookmark test name * Added back bookmark for full_table stream * Updated comment * Removed bookmark test case. * TDL-17698: Dict based to class based refactoring (#66) * refactored code to class based * resolve unittest failure * updated the code to write state after syncing records for file metadata stream * added code change to return if file is not changed * added code change to write file metadata bookmark at the end of the sync * added function comments * created a function to get path with query params * updated code according to pylint * resolved unittest failure * TDL-19029: Add support for data collection from the shared drives * change streams.py * update README for supportsAllDrives * remove invalid datatype exception * include false as string or bool * add unitest * updated error message * change default value * update comments * update parameter name snake case * solved circleci error * update comments in unittest * Add exception for the invalid value of the supports_all_drives * optimize code as per collin suggestion * Addressed andy's comments * rename import sync name * rename import sync name * updated unittest Co-authored-by: Prijen Khokhani <88327452+prijendev@users.noreply.github.com> Co-authored-by: Harsh <80324346+harshpatel4crest@users.noreply.github.com> Co-authored-by: prijendev <prijen.khokhani@crestdatasys.com> Co-authored-by: Jay Tilala <jay.tilala@CDSYS.LOCAL> Co-authored-by: harshpatel4crest <harsh.patel4@crestdatasys.com> * added param for shared drive for all syncs (#89) Co-authored-by: jtilala <104966482+jtilala@users.noreply.github.com> Co-authored-by: Jay Tilala <jay.tilala@CDSYS.LOCAL> Co-authored-by: savan-chovatiya <80703490+savan-chovatiya@users.noreply.github.com> Co-authored-by: Prijen Khokhani <88327452+prijendev@users.noreply.github.com> Co-authored-by: prijendev <prijen.khokhani@crestdatasys.com>
- Loading branch information
1 parent
db30219
commit d15ac18
Showing
8 changed files
with
165 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import unittest | ||
from unittest import mock | ||
from tap_google_sheets import main | ||
|
||
|
||
class MockedParseArgs: | ||
discover = False | ||
config = {"client_id":"", "client_secret": "", "refresh_token": "", "user_agent": ""} | ||
state = False | ||
catalog = "test" | ||
|
||
@mock.patch("tap_google_sheets.discover") | ||
@mock.patch("tap_google_sheets.singer.utils.parse_args", return_value=MockedParseArgs) | ||
@mock.patch("tap_google_sheets.GoogleClient.__enter__", return_value="test") | ||
@mock.patch("tap_google_sheets.sync") | ||
class TestCatalog(unittest.TestCase): | ||
def test_catalog_is_given_in_sync(self, mocked_sync, mocked_google_client, mocked_parse_args, mocked_discover): | ||
""" | ||
To verify that if catalog is given in sync mode then run with catalog file | ||
""" | ||
main() | ||
mocked_sync.assert_called_with(client="test", config=MockedParseArgs.config, catalog="test", state={}) | ||
self.assertEqual(mocked_discover.call_count, 0, "discover function is not called expected times") | ||
|
||
def test_catalog_is_not_given_in_sync(self, mocked_sync, mocked_google_client, mocked_parse_args, mocked_discover): | ||
""" | ||
To verify that if catalog is not given in sync mode then run discover mode to generate catalog | ||
""" | ||
# mocking discover function | ||
MockedParseArgs.catalog = "" | ||
mocked_discover.return_value = "test" | ||
main() | ||
mocked_sync.assert_called_with(client="test", config=MockedParseArgs.config, catalog="test", state={}) | ||
self.assertEqual(mocked_discover.call_count, 1, "discover function is not called expected times") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,75 @@ | ||
import unittest | ||
from unittest import mock | ||
from tap_google_sheets.transform import transform_sheet_number_data | ||
|
||
class TestNumberTransform(unittest.TestCase): | ||
"""Verify that boolean values falls back as string""" | ||
def test_number_transform_boolean_as_string(self): | ||
|
||
@mock.patch("tap_google_sheets.transform.LOGGER.info") | ||
def test_number_transform_boolean_as_string(self, mocked_logger_info): | ||
"""Verify that boolean values falls back as string""" | ||
value = True | ||
transformed_data = transform_sheet_number_data(value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
transformed_data = transform_sheet_number_data("TRUE", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, str) | ||
self.assertEqual(transformed_data, "True") | ||
# verify warning logger is called with expected params | ||
mocked_logger_info.assert_called_with("WARNING: POSSIBLE DATA TYPE ERROR: SHEET: {}, COL: {}, CELL: {}{}, TYPE: {} ".format( | ||
"test-sheet", "test-column", "col", 1, "numberType")) | ||
|
||
def test_number_transform_int_value_as_int(self): | ||
"""Verify that int values falls back as type int""" | ||
value = 1 | ||
transformed_data = transform_sheet_number_data(value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
transformed_data = transform_sheet_number_data("1", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, int) | ||
self.assertEqual(transformed_data, 1) | ||
|
||
def test_number_transform_int_exponential_value_as_int(self): | ||
"""Verify that exponential int values falls back as type int""" | ||
value = 1234 | ||
transformed_data = transform_sheet_number_data("1.23E+03", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, int) | ||
self.assertEqual(transformed_data, 1234) | ||
|
||
def test_number_transform_int_US_format_value_as_int(self): | ||
"""Verify that US format int values falls back as type int""" | ||
value = 1234 | ||
transformed_data = transform_sheet_number_data("1,234", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, int) | ||
self.assertEqual(transformed_data, 1234) | ||
|
||
def test_number_transform_float_value_as_float(self): | ||
"""Verify that float values falls back as type float""" | ||
value = 1.0 | ||
transformed_data = transform_sheet_number_data(value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
value = 1.1 | ||
transformed_data = transform_sheet_number_data("1.1", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, float) | ||
self.assertEqual(transformed_data, 1.1) | ||
|
||
def test_number_transform_float_exponential_value_as_float(self): | ||
"""Verify that exponential float values falls back as type float""" | ||
value = 5e-16 | ||
transformed_data = transform_sheet_number_data("5.00E-16", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, float) | ||
self.assertEqual(transformed_data, 1.0) | ||
self.assertEqual(transformed_data, 5e-16) | ||
|
||
def test_number_transform_float_US_format_value_as_float(self): | ||
"""Verify that US format float values falls back as type float""" | ||
value = 1234.1 | ||
transformed_data = transform_sheet_number_data("1,234.1", value, sheet_title='test-sheet', col_name='test-column', col_letter='col', row_num=1, col_type='numberType') | ||
self.assertIsInstance(transformed_data, float) | ||
self.assertEqual(transformed_data, 1234.1) | ||
|
||
def test_number_transform_datetime_value_as_string(self): | ||
"""Verify that datetime values falls back as type string""" | ||
|
||
datetime_expected_value = transform_sheet_number_data("01/01/2022 0:00:00", 44562, "test_sheet", "Number Column", "A", 4, "numberType") | ||
|
||
self.assertEqual(datetime_expected_value, "01/01/2022 0:00:00") | ||
self.assertIsInstance(datetime_expected_value, str) | ||
|
||
def test_number_transform_time_value_as_string(self): | ||
"""Verify that time values falls back as type string""" | ||
|
||
time_expected_value = transform_sheet_number_data("5:00 PM", 0.7083333333333334, "test_sheet", "Number Column", "A", 5, "numberType") | ||
|
||
self.assertEqual(time_expected_value, "5:00 PM") | ||
self.assertIsInstance(time_expected_value, str) |