conftest.py 5.4 KB

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