Start adding tests

This commit is contained in:
2023-01-19 14:29:25 -05:00
parent e75c22d583
commit 68423488ff
8 changed files with 319 additions and 96 deletions

View File

View File

@ -0,0 +1,49 @@
import json
import pytest
class MopidyRequest:
def __init__(self, **kwargs):
self.request_data = {
"name": kwargs.get('name', "Same in the End"),
"artist": kwargs.get("artist", "Sublime"),
"album": kwargs.get("album", "Sublime"),
"track_number": int(kwargs.get("track_number", 4)),
"run_time_ticks": int(kwargs.get("run_time_ticks", 156604)),
"run_time": int(kwargs.get("run_time", "156")),
"playback_time_ticks": int(
kwargs.get("playback_time_ticks", 15045)
),
"musicbrainz_track_id": kwargs.get(
"musicbrainz_track_id", "54214d63-5adf-4909-87cd-c65c37a6d558"
),
"musicbrainz_album_id": kwargs.get(
"musicbrainz_album_id", "03b864cd-7761-314c-a892-05a89ddff00d"
),
"musicbrainz_artist_id": kwargs.get(
"musicbrainz_artist_id", "95f5b748-d370-47fe-85bd-0af2dc450bc0"
),
"mopidy_uri": kwargs.get(
"mopidy_uri",
"local:track:Sublime%20-%20Sublime/Disc%201%20-%2004%20-%20Same%20in%20the%20End.mp3",
),
"status": kwargs.get("status", "resumed"),
}
def __eq__(self, other):
return self.name == other.name
@property
def request_json(self):
return json.dumps(self.request_data)
@pytest.fixture
def mopidy_track_request_data(**kwargs):
return MopidyRequest(**kwargs).request_json
@pytest.fixture
def mopidy_podcast_request_data():
mopidy_uri = "local:podcast:Up%20First/2022-01-01%20Up%20First.mp3"
return MopidyRequest(mopidy_uri=mopidy_uri).request_json

View File

@ -0,0 +1,52 @@
import json
import pytest
from django.urls import reverse
from scrobbles.models import Scrobble
from music.models import Track
from podcasts.models import Episode
def test_get_not_allowed_from_mopidy(client):
url = reverse('scrobbles:mopidy-websocket')
response = client.get(url)
assert response.status_code == 405
def test_bad_mopidy_request_data(client):
url = reverse('scrobbles:mopidy-websocket')
response = client.post(url)
assert response.status_code == 400
assert (
response.data['detail']
== 'JSON parse error - Expecting value: line 1 column 1 (char 0)'
)
@pytest.mark.django_db
def test_scrobble_mopidy_track(client, mopidy_track_request_data):
url = reverse('scrobbles:mopidy-websocket')
response = client.post(
url, mopidy_track_request_data, content_type='application/json'
)
assert response.status_code == 200
assert response.data == {'scrobble_id': 1}
scrobble = Scrobble.objects.get(id=1)
assert scrobble.media_obj.__class__ == Track
assert scrobble.media_obj.title == "Same in the End"
@pytest.mark.django_db
def test_scrobble_mopidy_podcast(client, mopidy_podcast_request_data):
url = reverse('scrobbles:mopidy-websocket')
response = client.post(
url, mopidy_podcast_request_data, content_type='application/json'
)
assert response.status_code == 200
assert response.data == {'scrobble_id': 1}
scrobble = Scrobble.objects.get(id=1)
assert scrobble.media_obj.__class__ == Episode
assert scrobble.media_obj.title == "Up First"