def test_extraction_with_empty_result(self) -> None: """ Test Extraction with empty result from query """ with patch.object(SQLAlchemyExtractor, '_get_connection'): extractor = PrestoViewMetadataExtractor() extractor.init(self.conf) results = extractor.extract() self.assertEqual(results, None)
def test_extraction_with_multiple_views(self) -> None: with patch.object(SQLAlchemyExtractor, '_get_connection') as mock_connection: connection = MagicMock() mock_connection.return_value = connection sql_execute = MagicMock() connection.execute = sql_execute columns1 = {'columns': [{'name': 'xyz', 'type': 'varchar'}, {'name': 'xyy', 'type': 'double'}, {'name': 'aaa', 'type': 'int'}, {'name': 'ab', 'type': 'varchar'}]} columns2 = {'columns': [{'name': 'xyy', 'type': 'varchar'}, {'name': 'ab', 'type': 'double'}, {'name': 'aaa', 'type': 'int'}, {'name': 'xyz', 'type': 'varchar'}]} sql_execute.return_value = [ {'tbl_id': 2, 'schema': 'test_schema2', 'name': 'test_view2', 'tbl_type': 'virtual_view', 'view_original_text': base64.b64encode(json.dumps(columns2).encode()).decode("utf-8")}, {'tbl_id': 1, 'schema': 'test_schema1', 'name': 'test_view1', 'tbl_type': 'virtual_view', 'view_original_text': base64.b64encode(json.dumps(columns1).encode()).decode("utf-8")}, ] extractor = PrestoViewMetadataExtractor() extractor.init(self.conf) actual_first_view = extractor.extract() expected_first_view = TableMetadata('presto', 'gold', 'test_schema2', 'test_view2', None, [ColumnMetadata(u'xyy', None, u'varchar', 0), ColumnMetadata(u'ab', None, u'double', 1), ColumnMetadata(u'aaa', None, u'int', 2), ColumnMetadata(u'xyz', None, u'varchar', 3)], True) self.assertEqual(expected_first_view.__repr__(), actual_first_view.__repr__()) actual_second_view = extractor.extract() expected_second_view = TableMetadata('presto', 'gold', 'test_schema1', 'test_view1', None, [ColumnMetadata(u'xyz', None, u'varchar', 0), ColumnMetadata(u'xyy', None, u'double', 1), ColumnMetadata(u'aaa', None, u'int', 2), ColumnMetadata(u'ab', None, u'varchar', 3)], True) self.assertEqual(expected_second_view.__repr__(), actual_second_view.__repr__()) self.assertIsNone(extractor.extract())