def test_consume_with_payload_kind_is_not_supported_expect_exception(self): with self.assertRaises(UnsupportedPayloadKindError): logical_replication.consume_message( [{ 'tap_stream_id': 'myschema-mytable' }], {}, self.WalMessage( payload= '{"kind":"truncate", "schema": "myschema", "table": "mytable"}', data_start='some lsn'), None, {})
def test_consume_with_message_payload_is_not_json_expect_same_state(self): output = logical_replication.consume_message( [], {}, self.WalMessage(payload='this is an invalid json message', data_start=None), None, {}) self.assertDictEqual({}, output)
def test_consume_with_message_stream_in_payload_is_not_selected_expect_same_state( self): output = logical_replication.consume_message( [{ 'tap_stream_id': 'myschema-mytable' }], {}, self.WalMessage( payload='{"schema": "myschema", "table": "notmytable"}', data_start='some lsn'), None, {}) self.assertDictEqual({}, output)
def test_consume_message_with_new_column_in_payload_will_refresh_schema( self, refresh_schema_mock, send_schema_mock, write_message_mock): streams = [{ 'tap_stream_id': 'myschema-mytable', 'stream': 'mytable', 'schema': { 'properties': { 'id': {}, 'date_created': {} } }, 'metadata': [{ 'breadcrumb': [], 'metadata': { 'is-view': False, 'table-key-properties': ['id'], 'schema-name': 'myschema' } }, { "breadcrumb": ["properties", "id"], "metadata": { "sql-datatype": "integer", "inclusion": "automatic", } }, { "breadcrumb": ["properties", "date_created"], "metadata": { "sql-datatype": "datetime", "inclusion": "available", "selected": True } }], }] return_v = logical_replication.consume_message( streams, { 'bookmarks': { "myschema-mytable": { "last_replication_method": "LOG_BASED", "lsn": None, "version": 1000, "xmin": None } } }, self.WalMessage(payload='{"kind": "insert", ' '"schema": "myschema", ' '"table": "mytable",' '"columnnames": ["id", "date_created", "new_col"],' '"columnnames": [1, null, "some random text"]' '}', data_start='some lsn'), None, {}) self.assertDictEqual( return_v, { 'bookmarks': { "myschema-mytable": { "last_replication_method": "LOG_BASED", "lsn": "some lsn", "version": 1000, "xmin": None } } }) refresh_schema_mock.assert_called_once_with({}, [streams[0]]) send_schema_mock.assert_called_once() write_message_mock.assert_called_once()