• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gcivil-nyu-org / Wednesday-Fall2023-Team-1 / #614980386

13 Dec 2023 12:50AM UTC coverage: 86.973%. First build
#614980386

Pull #257

travis-ci

Pull Request #257: Final sprint

702 of 804 new or added lines in 23 files covered. (87.31%)

1382 of 1589 relevant lines covered (86.97%)

0.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.22
/user_profile/tests/test_search.py
1
from django.test import TestCase, RequestFactory
1✔
2
from django.urls import reverse
1✔
3
from user_profile.models import User
1✔
4
from django.contrib.messages import get_messages
1✔
5
from unittest.mock import patch
1✔
6
from user_profile.forms import SearchForm
1✔
7
import datetime
1✔
8

9

10
# Mocking the Spotify API response
11
def mock_spotify_search(*args, **kwargs):
1✔
12
    return {
1✔
13
        "tracks": {
14
            "items": [
15
                {
16
                    "id": "track_id",
17
                    "name": "track_name",
18
                    "artists": [{"name": "artist_name"}],
19
                    "album": {
20
                        "name": "album_name",
21
                        "images": [{"url": "image_url"}],
22
                        "release_date": "release_date",
23
                    },
24
                }
25
            ]
26
        }
27
    }
28

29

30
def mock_spotify_track(*args, **kwargs):
1✔
NEW
31
    return {
×
32
        "id": "track_id",
33
        "name": "track_name",
34
        "artists": [{"name": "artist_name"}],
35
        "album": {
36
            "name": "album_name",
37
            "images": [{"url": "image_url"}],
38
            "release_date": "release_date",
39
        },
40
    }
41

42

43
def mock_get_spotify_token(*args, **kwargs):
1✔
44
    return {"access_token": "test_token"}
1✔
45

46

47
class SearchViewTests(TestCase):
1✔
48
    def setUp(self):
1✔
49
        self.factory = RequestFactory()
1✔
50
        self.user = User.objects.create_user(
1✔
51
            username="testuser",
52
            password="12345",
53
            user_id="123",
54
            total_followers=100,
55
            profile_image_url="http://example.com/image.jpg",
56
            user_country="Test Country",
57
            user_last_login=datetime.datetime.now(),
58
            user_bio="Test Bio",
59
            user_city="Test City",
60
            user_total_friends=50,
61
            track_id="track123",
62
        )
63
        self.user.set_password("12345")
1✔
64
        self.user.save()
1✔
65

66
    @patch("user_profile.views.get_spotify_token", side_effect=mock_get_spotify_token)
1✔
67
    @patch("spotipy.Spotify.search", side_effect=mock_spotify_search)
1✔
68
    @patch("spotipy.Spotify.track", side_effect=mock_spotify_track)
1✔
69
    def test_search_view_authenticated_user_valid_search(
1✔
70
        self, mock_track, mock_search, mock_token
71
    ):
72
        login_successful = self.client.login(username="testuser", password="12345")
1✔
73
        self.assertTrue(login_successful)
1✔
74
        response = self.client.get(
1✔
75
            reverse("user_profile:search"), {"search_query": "test_query"}
76
        )
77
        self.assertEqual(response.status_code, 200)
1✔
78
        self.assertIn("results", response.context)
1✔
79
        self.assertIsInstance(response.context["SearchForm"], SearchForm)
1✔
80
        self.assertTrue(mock_search.called)
1✔
81

82
    def test_search_view_unauthenticated_user(self):
1✔
83
        response = self.client.get(reverse("user_profile:search"))
1✔
84
        messages = list(get_messages(response.wsgi_request))
1✔
85
        self.assertTrue(
1✔
86
            any(
87
                message.message
88
                == "Profile track search failed, please try again later."
89
                for message in messages
90
            )
91
        )
92
        self.assertEqual(response.status_code, 302)  # Redirect status code
1✔
93
        self.assertEqual(response.url, reverse("login:index"))
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc