import pytest from slz_apple_music_charts_data_processor.entities import Payload, RationalizedSchema @pytest.mark.parametrize( 'payload,expected', [ ( { 'info': { 'execution_name': 'exec name 1' }, 'dsp': 'apple', 'report_type': 'charts_daily', 'version': 'v1', 'licensor': 'sme', 'report_date': '2021-10-01', }, Payload( execution_name='exec name 1', dsp='apple', report_type='charts_daily', version='v1', licensor='sme', report_date='2021-10-01', ) ) ] ) def test_payload_from_dict(payload, expected): assert Payload.from_dict(payload) == expected def test_rationalized_schema_merge(): schema1 = RationalizedSchema() schema2 = RationalizedSchema( dim_apple_music_track=[100], dim_apple_music_track_preview=[101, 103], dim_apple_music_artist=[102, 104], link_apple_music_track_artist=[105, 108], fact_apple_music_chart_track=[110, 121], ) schema3 = RationalizedSchema( dim_apple_music_track=[200], dim_apple_music_track_preview=[201, 203], dim_apple_music_artist=[202, 204], link_apple_music_track_artist=[205, 208], fact_apple_music_chart_track=[210, 221], ) schema1.merge(schema2) schema1.merge(schema3) expected = RationalizedSchema( dim_apple_music_track=[100, 200], dim_apple_music_track_preview=[101, 103, 201, 203], dim_apple_music_artist=[102, 104, 202, 204], link_apple_music_track_artist=[105, 108, 205, 208], fact_apple_music_chart_track=[110, 121, 210, 221], ) assert schema1 == expected