test_views.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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_same_track_different_album(
  32. client, mopidy_track_request_data, mopidy_track_diff_album_request_data
  33. ):
  34. url = reverse('scrobbles:mopidy-websocket')
  35. response = client.post(
  36. url, mopidy_track_request_data, content_type='application/json'
  37. )
  38. assert response.status_code == 200
  39. assert response.data == {'scrobble_id': 1}
  40. scrobble = Scrobble.objects.get(id=1)
  41. assert scrobble.media_obj.album.name == "Sublime"
  42. response = client.post(
  43. url,
  44. mopidy_track_diff_album_request_data,
  45. content_type='application/json',
  46. )
  47. scrobble = Scrobble.objects.get(id=2)
  48. assert scrobble.media_obj.__class__ == Track
  49. assert scrobble.media_obj.album.name == "Gold"
  50. assert scrobble.media_obj.title == "Same in the End"
  51. @pytest.mark.django_db
  52. def test_scrobble_mopidy_podcast(client, mopidy_podcast_request_data):
  53. url = reverse('scrobbles:mopidy-websocket')
  54. response = client.post(
  55. url, mopidy_podcast_request_data, content_type='application/json'
  56. )
  57. assert response.status_code == 200
  58. assert response.data == {'scrobble_id': 1}
  59. scrobble = Scrobble.objects.get(id=1)
  60. assert scrobble.media_obj.__class__ == Episode
  61. assert scrobble.media_obj.title == "Up First"