From 2c73121367460ea90b67e53c2ff9ac85e710d0dd Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Mon, 19 Aug 2024 09:45:16 -0400 Subject: [PATCH] [scrobbles] Fix aggregator tests --- tests/scrobbles_tests/conftest.py | 24 +++++++++++++++++++++++ tests/scrobbles_tests/test_aggregators.py | 14 ++++++------- tests/scrobbles_tests/test_metadata.py | 15 ++++++++++++++ 3 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 tests/scrobbles_tests/test_metadata.py diff --git a/tests/scrobbles_tests/conftest.py b/tests/scrobbles_tests/conftest.py index 88c1ebb..34ccc7a 100644 --- a/tests/scrobbles_tests/conftest.py +++ b/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() diff --git a/tests/scrobbles_tests/test_aggregators.py b/tests/scrobbles_tests/test_aggregators.py index 3c63154..433e02f 100644 --- a/tests/scrobbles_tests/test_aggregators.py +++ b/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) diff --git a/tests/scrobbles_tests/test_metadata.py b/tests/scrobbles_tests/test_metadata.py new file mode 100644 index 0000000..6db9b38 --- /dev/null +++ b/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 + ) + ] + )