You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.2 KiB
50 lines
2.2 KiB
from django.test import TestCase
|
|
from api.models import Track, Genre, Artist
|
|
from login.models import User
|
|
from api import utils
|
|
import math
|
|
import pprint
|
|
|
|
class GenreDataTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
test_user = User.objects.create(id="chrisshi", refresh_token="blah", access_token="blah",
|
|
access_expires_in=10)
|
|
genre = Genre.objects.create(name="classical", num_songs=3)
|
|
artist_1 = Artist.objects.create(id='art1', name="Beethoven")
|
|
artist_2 = Artist.objects.create(id='art2', name="Mozart")
|
|
artist_3 = Artist.objects.create(id='art3', name='Chopin')
|
|
|
|
track_1 = Track.objects.create(id='track1', year=2013,
|
|
popularity=5, runtime=20,
|
|
name='concerto1',
|
|
genre=genre)
|
|
track_1.users.add(test_user)
|
|
track_1.artists.add(artist_1)
|
|
track_1.artists.add(artist_2)
|
|
|
|
track_2 = Track.objects.create(id='track2', year=2013,
|
|
popularity=5, runtime=20,
|
|
name='concerto2',
|
|
genre=genre)
|
|
track_2.users.add(test_user)
|
|
track_2.artists.add(artist_2)
|
|
track_2.artists.add(artist_3)
|
|
track_2.artists.add(artist_1)
|
|
|
|
track_3 = Track.objects.create(id='track3', year=2013,
|
|
popularity=5, runtime=20,
|
|
name='concerto3',
|
|
genre=genre)
|
|
track_3.users.add(test_user)
|
|
track_3.artists.add(artist_1)
|
|
track_3.artists.add(artist_3)
|
|
|
|
def test_get_artist_counts_in_genre(self):
|
|
test_user = User.objects.get(id='chrisshi')
|
|
artist_counts = utils.get_artists_in_genre(test_user, 'classical', 10)
|
|
# pprint.pprint(artist_counts)
|
|
self.assertTrue(math.isclose(artist_counts['Beethoven'], 1.3, rel_tol=0.05))
|
|
self.assertTrue(math.isclose(artist_counts['Mozart'], 0.85, rel_tol=0.05))
|
|
self.assertTrue(math.isclose(artist_counts['Chopin'], 0.85, rel_tol=0.05))
|
|
self.assertTrue(math.isclose(sum(artist_counts.values()), 3, rel_tol=0.01))
|