conftest.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import json
  2. import pytest
  3. from django.contrib.auth import get_user_model
  4. from rest_framework.authtoken.models import Token
  5. User = get_user_model()
  6. class MopidyRequest:
  7. name = "Same in the End"
  8. artist = "Sublime"
  9. album = "Sublime"
  10. track_number = 4
  11. run_time_ticks = 156604
  12. run_time = 60
  13. playback_time_ticks = 15045
  14. musicbrainz_track_id = "54214d63-5adf-4909-87cd-c65c37a6d558"
  15. musicbrainz_album_id = "03b864cd-7761-314c-a892-05a89ddff00d"
  16. musicbrainz_artist_id = "95f5b748-d370-47fe-85bd-0af2dc450bc0"
  17. mopidy_uri = "local:track:Sublime%20-%20Sublime/Disc%201%20-%2004%20-%20Same%20in%20the%20End.mp3" # noqa
  18. status = "resumed"
  19. def __init__(self, **kwargs):
  20. self.request_data = {
  21. "name": kwargs.get("name", self.name),
  22. "artist": kwargs.get("artist", self.artist),
  23. "album": kwargs.get("album", self.album),
  24. "track_number": int(kwargs.get("track_number", self.track_number)),
  25. "run_time_ticks": int(
  26. kwargs.get("run_time_ticks", self.run_time_ticks)
  27. ),
  28. "run_time": int(kwargs.get("run_time", self.run_time)),
  29. "playback_time_ticks": int(
  30. kwargs.get("playback_time_ticks", self.playback_time_ticks)
  31. ),
  32. "musicbrainz_track_id": kwargs.get(
  33. "musicbrainz_track_id", self.musicbrainz_track_id
  34. ),
  35. "musicbrainz_album_id": kwargs.get(
  36. "musicbrainz_album_id", self.musicbrainz_album_id
  37. ),
  38. "musicbrainz_artist_id": kwargs.get(
  39. "musicbrainz_artist_id", self.musicbrainz_artist_id
  40. ),
  41. "mopidy_uri": kwargs.get("mopidy_uri", self.mopidy_uri),
  42. "status": kwargs.get("status", self.status),
  43. }
  44. def __eq__(self, other):
  45. for key in self.request_data.keys():
  46. if self.request_data[key] != getattr(self, key):
  47. return False
  48. return True
  49. @property
  50. def request_json(self):
  51. return json.dumps(self.request_data)
  52. @pytest.fixture
  53. def valid_auth_token():
  54. user = User.objects.create(email="test@exmaple.com")
  55. return Token.objects.create(user=user).key
  56. @pytest.fixture
  57. def mopidy_track():
  58. return MopidyRequest()
  59. @pytest.fixture
  60. def mopidy_track_diff_album_request_data(**kwargs):
  61. mb_album_id = "0c56c457-afe1-4679-baab-759ba8dd2a58"
  62. return MopidyRequest(
  63. album="Gold", musicbrainz_album_id=mb_album_id
  64. ).request_json
  65. @pytest.fixture
  66. def mopidy_podcast():
  67. mopidy_uri = "local:podcast:Up%20First/2022-01-01%20Up%20First.mp3"
  68. return MopidyRequest(mopidy_uri=mopidy_uri)
  69. class JellyfinTrackRequest:
  70. name = "Emotion"
  71. artist = "Carly Rae Jepsen"
  72. album = "Emotion"
  73. track_number = 1
  74. item_type = "Audio"
  75. timestamp = "2024-01-14 12:00:19"
  76. run_time_ticks = 156604
  77. run_time = "00:00:60"
  78. playback_time_ticks = 15045
  79. musicbrainz_track_id = "54214d63-5adf-4909-87cd-c65c37a6d558"
  80. musicbrainz_album_id = "03b864cd-7761-314c-a892-05a89ddff00d"
  81. musicbrainz_artist_id = "95f5b748-d370-47fe-85bd-0af2dc450bc0"
  82. status = "resumed"
  83. def __init__(self, **kwargs):
  84. self.request_data = {
  85. "Name": kwargs.get("name", self.name),
  86. "Artist": kwargs.get("artist", self.artist),
  87. "Album": kwargs.get("album", self.album),
  88. "TrackNumber": int(kwargs.get("track_number", self.track_number)),
  89. "RunTime": kwargs.get("run_time", self.run_time),
  90. "ItemType": kwargs.get("item_type", self.item_type),
  91. "UtcTimestamp": kwargs.get("timestamp", self.timestamp),
  92. "PlaybackPositionTicks": int(
  93. kwargs.get("playback_time_ticks", self.playback_time_ticks)
  94. ),
  95. "Provider_musicbrainztrack": kwargs.get(
  96. "musicbrainz_track_id", self.musicbrainz_track_id
  97. ),
  98. "Provider_musicbrainzalbum": kwargs.get(
  99. "musicbrainz_album_id", self.musicbrainz_album_id
  100. ),
  101. "Provider_musicbrainzartist": kwargs.get(
  102. "musicbrainz_artist_id", self.musicbrainz_artist_id
  103. ),
  104. "Status": kwargs.get("status", self.status),
  105. }
  106. def __eq__(self, other):
  107. for key in self.request_data.keys():
  108. if self.request_data[key] != getattr(self, key):
  109. return False
  110. return True
  111. @property
  112. def request_json(self):
  113. return json.dumps(self.request_data)
  114. @pytest.fixture
  115. def jellyfin_track():
  116. return JellyfinTrackRequest()