conftest.py 5.1 KB

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