test_views.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import json
  2. import pytest
  3. from django.urls import reverse
  4. from scrobbles.models import Scrobble
  5. from music.models import Track
  6. from podcasts.models import Episode
  7. def test_get_not_allowed_from_mopidy(client):
  8. url = reverse('scrobbles:mopidy-websocket')
  9. response = client.get(url)
  10. assert response.status_code == 405
  11. def test_bad_mopidy_request_data(client):
  12. url = reverse('scrobbles:mopidy-websocket')
  13. response = client.post(url)
  14. assert response.status_code == 400
  15. assert (
  16. response.data['detail']
  17. == 'JSON parse error - Expecting value: line 1 column 1 (char 0)'
  18. )
  19. @pytest.mark.django_db
  20. def test_scrobble_mopidy_track(client, mopidy_track_request_data):
  21. url = reverse('scrobbles:mopidy-websocket')
  22. response = client.post(
  23. url, mopidy_track_request_data, content_type='application/json'
  24. )
  25. assert response.status_code == 200
  26. assert response.data == {'scrobble_id': 1}
  27. scrobble = Scrobble.objects.get(id=1)
  28. assert scrobble.media_obj.__class__ == Track
  29. assert scrobble.media_obj.title == "Same in the End"
  30. @pytest.mark.django_db
  31. def test_scrobble_mopidy_podcast(client, mopidy_podcast_request_data):
  32. url = reverse('scrobbles:mopidy-websocket')
  33. response = client.post(
  34. url, mopidy_podcast_request_data, content_type='application/json'
  35. )
  36. assert response.status_code == 200
  37. assert response.data == {'scrobble_id': 1}
  38. scrobble = Scrobble.objects.get(id=1)
  39. assert scrobble.media_obj.__class__ == Episode
  40. assert scrobble.media_obj.title == "Up First"