/
/
1"""Shared helpers for the music controller tests."""
2
3from __future__ import annotations
4
5from music_assistant_models.enums import ExternalID
6from music_assistant_models.media_items import (
7 Artist,
8 AudioFormat,
9 ProviderMapping,
10 Track,
11 UniqueList,
12)
13
14ISRC = "USRC17607839"
15
16
17def create_track(
18 provider_instance: str,
19 item_id: str,
20 name: str = "Test Track",
21 isrc: str = ISRC,
22 duration: int = 200,
23) -> Track:
24 """
25 Create a Track as it would be received from a music provider.
26
27 :param provider_instance: The provider instance id the track originates from.
28 :param item_id: The item id of the track on the provider.
29 :param name: The track name.
30 :param isrc: The ISRC external id to attach to the track.
31 :param duration: The track duration in seconds.
32 """
33 provider_domain = provider_instance.split("_", maxsplit=1)[0]
34 return Track(
35 item_id=item_id,
36 provider=provider_instance,
37 name=name,
38 duration=duration,
39 external_ids={(ExternalID.ISRC, isrc)},
40 provider_mappings={
41 ProviderMapping(
42 item_id=item_id,
43 provider_domain=provider_domain,
44 provider_instance=provider_instance,
45 audio_format=AudioFormat(),
46 )
47 },
48 artists=UniqueList(
49 [
50 Artist(
51 item_id=f"{item_id}_artist",
52 provider=provider_instance,
53 name="Test Artist",
54 provider_mappings={
55 ProviderMapping(
56 item_id=f"{item_id}_artist",
57 provider_domain=provider_domain,
58 provider_instance=provider_instance,
59 audio_format=AudioFormat(),
60 )
61 },
62 )
63 ]
64 ),
65 )
66