"""DDEX schema tests.""" from ddex_ingester_common.models.purged_ddex.product import Product from ddex_ingester_common.models.state_machine.product import ( Product as StateMachineProduct ) from ddex_ingester_common.schemas.purged_ddex_schema import PurgedDDEXSchema from ddex_ingester_common.schemas.state_machine_schema import ( StateMachineSchema ) def test_purged_ddex_schema_deserialize(purged_ddex_document): """Test deserializing DDEX document into dict with objects.""" deserialized_ddex = PurgedDDEXSchema().load(purged_ddex_document) assert type(deserialized_ddex.product) is Product assert deserialized_ddex.message_id == '205950337' assert ( deserialized_ddex.message_thread_id == 'G0100034438105_TOC' ) assert ( deserialized_ddex.product.product_name == ('Star Wars Episode VI: Return of the Jedi ' + '(Original Motion Picture Soundtrack)') ) def test_purged_ddex_schema_to_context(purged_ddex_document): """Test deserializing Purged DDEX document into state machine context.""" deserialized_ddex = PurgedDDEXSchema().load(purged_ddex_document) data_dump = StateMachineSchema().dump(deserialized_ddex) data_dump['bucket'] = 'bucket' data_dump['key'] = 'key' data_dump['ddex_provider'] = 'SME' data_dump['correlation_id'] = '4ertdgjd56itkcllyighbl' context = StateMachineSchema().load(data_dump) assert type(context.product) is StateMachineProduct assert context.message_id == '205950337' assert context.message_thread_id == 'G0100034438105_TOC' assert context.product.upc == '886445603668' def test_purged_awal_ddex_schema_deserialize(purged_awal_ddex_document): """Test deserializing DDEX document into dict with objects.""" deserialized_ddex = PurgedDDEXSchema().load(purged_awal_ddex_document) data_dump = StateMachineSchema().dump(deserialized_ddex) assert data_dump['product']['upc'] == '8718531590199' assert deserialized_ddex.product.upc == '8718531590199' assert type(deserialized_ddex.product) is Product assert deserialized_ddex.message_id == '26ADC6FA5AE9449CA26DB75DAFA3BD6F' assert ( deserialized_ddex.message_thread_id == '11A46AE2BF5C4F8BA78394590F743D37_8718531590199' ) assert ( deserialized_ddex.product.product_name == 'Life@Opwekking 19: Voor altijd dichtbij' )