conftest.py 5.1 KB

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