Procházet zdrojové kódy

[scrobbles] Fix aggregator tests

Colin Powell před 8 měsíci
rodič
revize
2c73121367

+ 24 - 0
tests/scrobbles_tests/conftest.py

@@ -4,9 +4,32 @@ import pytest
 from django.contrib.auth import get_user_model
 from rest_framework.authtoken.models import Token
 
+from scrobbles.models import Scrobble
+from boardgames.models import BoardGame
+
 User = get_user_model()
 
 
+@pytest.fixture
+def boardgame():
+    user = User.objects.create(email="test@exmaple.com")
+    return Token.objects.create(user=user).key
+
+
+@pytest.fixture
+def boardgame_scrobble():
+    return Scrobble.objects.create(
+        board_game=BoardGame.objects.create(title="Test Board Game"),
+        media_type="BoardGame",
+        played_to_completion=True,
+        log={
+            "players": [
+                {"user_id": 1, "win": True, "score": 30, "color": "Blue"}
+            ]
+        },
+    )
+
+
 class MopidyRequest:
     name = "Same in the End"
     artist = "Sublime"
@@ -63,6 +86,7 @@ def valid_auth_token():
     user = User.objects.create(email="test@exmaple.com")
     return Token.objects.create(user=user).key
 
+
 @pytest.fixture
 def mopidy_track():
     return MopidyRequest()

+ 6 - 8
tests/scrobbles_tests/test_aggregators.py

@@ -1,6 +1,4 @@
 from datetime import datetime, timedelta
-from unittest import mock
-from unittest.mock import patch
 
 import pytest
 import time_machine
@@ -13,13 +11,13 @@ from profiles.models import UserProfile
 from scrobbles.models import Scrobble
 
 
-def build_scrobbles(client, request_data, num=7, spacing=2):
+def build_scrobbles(client, request_json, num=7, spacing=2):
     url = reverse("scrobbles:mopidy-webhook")
     user = get_user_model().objects.create(username="Test User")
     user.profile.timezone = "US/Eastern"
     user.profile.save()
     for i in range(num):
-        client.post(url, request_data, content_type="application/json")
+        client.post(url, request_json, content_type="application/json")
         s = Scrobble.objects.last()
         s.user = user
         s.timestamp = timezone.now() - timedelta(days=i * spacing)
@@ -29,8 +27,8 @@ def build_scrobbles(client, request_data, num=7, spacing=2):
 
 @pytest.mark.django_db
 @time_machine.travel(datetime(2022, 3, 4, 1, 24))
-def test_scrobble_counts_data(client, mopidy_track_request_data):
-    build_scrobbles(client, mopidy_track_request_data)
+def test_scrobble_counts_data(client, mopidy_track):
+    build_scrobbles(client, mopidy_track.request_json)
     user = get_user_model().objects.first()
     count_dict = scrobble_counts(user)
     assert count_dict == {
@@ -44,8 +42,8 @@ def test_scrobble_counts_data(client, mopidy_track_request_data):
 
 @pytest.mark.django_db
 @time_machine.travel(datetime(2022, 3, 4, 1, 24))
-def test_live_charts(client, mopidy_track_request_data):
-    build_scrobbles(client, mopidy_track_request_data, 7, 1)
+def test_live_charts(client, mopidy_track):
+    build_scrobbles(client, mopidy_track.request_json, 7, 1)
     user = get_user_model().objects.first()
 
     week = week_of_scrobbles(user)

+ 15 - 0
tests/scrobbles_tests/test_metadata.py

@@ -0,0 +1,15 @@
+import pytest
+
+from scrobbles.dataclasses import BoardGameLogData, BoardGameScoreLogData
+
+
+@pytest.mark.django_db
+def test_boardgame_log_data(boardgame_scrobble):
+    assert not boardgame_scrobble.geo_location
+    assert boardgame_scrobble.logdata == BoardGameLogData(
+        players=[
+            BoardGameScoreLogData(
+                user_id=1, name=None, color="Blue", score=30, win=True
+            )
+        ]
+    )