# pylint: disable=unused-argument import json import pytest from dapd_db_schema.schemas.etl import DimAlbum, DimArtist, DimPlaylist, DimTrack from dapd_transformation_service.entities.dimension_meta import DspEnum from dapd_transformation_service.exceptions import SchemaValidationError from dapd_transformation_service.validators.json_schema_validator import JsonSchemaValidator # noinspection PyTestParametrized @pytest.mark.parametrize(['dsp', 'dim_type'], [ (DspEnum.SPOTIFY, DimPlaylist), (DspEnum.APPLE_MUSIC, DimPlaylist), (DspEnum.SPOTIFY, DimTrack), (DspEnum.APPLE_MUSIC, DimTrack), (DspEnum.SPOTIFY, DimArtist), (DspEnum.APPLE_MUSIC, DimArtist), (DspEnum.SPOTIFY, DimAlbum), (DspEnum.APPLE_MUSIC, DimAlbum), ]) def test_validate_schema__ok(db, raw_data, dim_type, dsp, logger): data = json.loads(raw_data) validator = JsonSchemaValidator(logger) validator.validate(data, dim_type, dsp) def test_validate_schema__failed(db, logger): data = {'foo': 'bar'} dim_type = DimPlaylist dsp = DspEnum.SPOTIFY validator = JsonSchemaValidator(logger) with pytest.raises(SchemaValidationError): validator.validate(data, dim_type, dsp)