conftest.py 5.1 KB

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