"""Test ISRC model.""" from collections import OrderedDict import pytest from backend.connectors import mysql from backend.models.isrc import get_isrc_usage_stats from backend.models.isrc import get_tracks_with_isrc import tests.conftest from tests.testutils import db @db.test_schema def test_get_isrc_usage_stats(): """Test get_isrc_usage_stats.""" with mysql.db_session() as session: session.execute(tests.conftest.CREATE_TABLE_RELEASES) session.execute(tests.conftest.INSERT_TEST_PRODUCTS) session.execute(tests.conftest.CREATE_TABLE_DISTRIBUTION_FORMAT) session.execute(tests.conftest.INSERT_TEST_DISTRIBUTION_FORMATS) session.execute(tests.conftest.INSERT_TEST_TRACKS) isrc_usage_stats = get_isrc_usage_stats(72, session=session) assert isrc_usage_stats == OrderedDict([ ('product', OrderedDict([ ('id', 72), ('tracks', [ OrderedDict([ ('id', 132321), ('isrc', 'isrc2'), ('isrc_usage', OrderedDict([ ('digital_audio', OrderedDict([ ('products', [ OrderedDict([ ('id', 76), ('name', 'Product R'), ('tracks', [ OrderedDict([ ('id', 312323), ('name', 'Track 3') ]) ]) ]) ]), ('count', 1) ])), ('physical', OrderedDict([ ('products', [ OrderedDict([ ('id', 101), ('name', 'Product V'), ('tracks', [ OrderedDict([ ('id', 123324), ('name', 'Track 4') ]) ]) ]), OrderedDict([ ('id', 301), ('name', 'Product AA'), ('tracks', [ OrderedDict([ ('id', 123325), ('name', 'Track 55') ]) ]) ]), OrderedDict([ ('id', 302), ('name', 'Product BB'), ('tracks', [ OrderedDict([ ('id', 123326), ('name', 'Track 66') ]) ]) ]), OrderedDict([ ('id', 303), ('name', 'Product CC'), ('tracks', [ OrderedDict([ ('id', 123327), ('name', 'Track 77') ]) ]) ]), OrderedDict([ ('id', 304), ('name', 'Product DD'), ('tracks', [ OrderedDict([ ('id', 123328), ('name', 'Track 88') ]) ]) ]), ]), ('count', 5) ])), ('count', 6) ])) ]), OrderedDict([ ('id', 546456), ('isrc', 'isrc1'), ('isrc_usage', OrderedDict([ ('digital_audio', OrderedDict([ ('products', [ OrderedDict([ ('id', 76), ('name', 'Product R'), ('tracks', [ OrderedDict([ ('id', 123322), ('name', 'Track 2') ]) ]) ]) ]), ('count', 1) ])), ('count', 1) ])) ]) ]) ])) ]) @db.test_schema @pytest.mark.parametrize( ( 'isrc', 'limit', 'offset', 'expected_result' ), [ # just 2 with 'isrc3' ( 'isrc3', 10, 0, {'pagination': {'total_records': 2, 'type': None}, 'items': [OrderedDict([('tuid', 666661)]), OrderedDict([('tuid', 666662)])]} # noqa ), # 10 with isrc4, only selecting 5 per page ( 'isrc4', 5, 0, {'pagination': {'total_records': 10, 'type': None}, 'items': [OrderedDict([('tuid', 666663)]), OrderedDict([('tuid', 666664)]), OrderedDict([('tuid', 666665)]), OrderedDict([('tuid', 666666)]), OrderedDict([('tuid', 666667)])]} # noqa ), # 10 with isrc4, asking for 20 ( 'isrc4', 20, 0, {'pagination': {'total_records': 10, 'type': None}, 'items': [OrderedDict([('tuid', 666663)]), OrderedDict([('tuid', 666664)]), OrderedDict([('tuid', 666665)]), OrderedDict([('tuid', 666666)]), OrderedDict([('tuid', 666667)]), OrderedDict([('tuid', 666668)]), OrderedDict([('tuid', 666669)]), OrderedDict([('tuid', 666670)]), OrderedDict([('tuid', 666671)]), OrderedDict([('tuid', 666672)])]} # noqa ) ] ) def test_get_tracks_with_isrc_model(isrc, limit, offset, expected_result): """Test get_tracks_with_isrc.""" with mysql.db_session() as session: session.execute(tests.conftest.CREATE_TABLE_RELEASES) session.execute(tests.conftest.INSERT_TEST_PRODUCTS) session.execute(tests.conftest.CREATE_TABLE_DISTRIBUTION_FORMAT) session.execute(tests.conftest.INSERT_TEST_DISTRIBUTION_FORMATS) session.execute(tests.conftest.INSERT_TEST_TRACKS) result = get_tracks_with_isrc(isrc, limit, offset) assert result == expected_result