test_aggregators.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from datetime import timedelta
  2. import pytest
  3. from django.urls import reverse
  4. from django.utils import timezone
  5. from music.aggregators import scrobble_counts, week_of_scrobbles
  6. from scrobbles.models import Scrobble
  7. def build_scrobbles(client, request_data, num=7, spacing=2):
  8. url = reverse('scrobbles:mopidy-websocket')
  9. for i in range(num):
  10. client.post(url, request_data, content_type='application/json')
  11. s = Scrobble.objects.last()
  12. s.timestamp = timezone.now() - timedelta(days=i * spacing)
  13. s.played_to_completion = True
  14. s.save()
  15. @pytest.mark.django_db
  16. def test_scrobble_counts_data(client, mopidy_track_request_data):
  17. build_scrobbles(client, mopidy_track_request_data)
  18. count_dict = scrobble_counts()
  19. assert count_dict == {
  20. 'alltime': 7,
  21. 'month': 7,
  22. 'today': 1,
  23. 'week': 2,
  24. 'year': 7,
  25. }
  26. @pytest.mark.django_db
  27. def test_week_of_scrobbles_data(client, mopidy_track_request_data):
  28. build_scrobbles(client, mopidy_track_request_data, 7, 1)
  29. week = week_of_scrobbles()
  30. assert list(week.values()) == [1, 1, 1, 1, 1, 1, 1]