"""Test module transcoding rule designer util functions.""" from typing import Any import pytest from transcoding.utils import transcoding_rule_constructor @pytest.fixture def construct_rule_data() -> dict[str, Any]: """Get testing data for construct rule function.""" return { "transcoding_rules": [ { "channels": None, "codec": "pcm", "bit_rate": 2411200, "sample_rate": 44100, "bit_depth": 16, "container": "wave", }, { "output_channels": 2, "output_codec": "pcm", "output_bit_rate": None, "output_sample_rate": None, "output_bit_depth": None, "output_container": "wave", "transcoding_rule_id": 2, "preset_id": 1, "input_container": "flac", "input_channels": 1, "input_codec": None, "input_sample_rate": None, "input_bit_depth": None, "output_key": None, }, {"container": "m4a"}, ], "source_asset_metadata": { "playtime_seconds": 246842, "channels": 2, "codec": "flac", "bit_rate": 1411200, "sample_rate": 48000, "bit_depth": 16, "container": "flac", }, "expected": [ { "channels": 2, "codec": "pcm", "bit_rate": 2411200, "sample_rate": 44100, "bit_depth": 16, "container": "wave", }, { "channels": 2, "codec": "pcm", "bit_rate": 1536000, "sample_rate": 48000, "bit_depth": 16, "container": "wave", }, {"container": "m4a"}, ], } def test_construct_rules_success(construct_rule_data: dict[str, Any]) -> None: """Test for success of construct_rules.""" # test function call result = transcoding_rule_constructor.construct_rules( construct_rule_data["transcoding_rules"], construct_rule_data["source_asset_metadata"], ) # checking assert result == construct_rule_data["expected"]