python-lastfm/test/test_group.py

135 lines
5.2 KiB
Python

#!/usr/bin/env python
__author__ = "Abhinav Sarkar <abhinav@abhinavsarkar.net>"
__version__ = "0.2"
__license__ = "GNU Lesser General Public License"
import unittest
import sys, os
from wsgi_intercept.urllib2_intercept import install_opener
import wsgi_intercept
from wsgi_test_app import create_wsgi_app
install_opener()
wsgi_intercept.add_wsgi_intercept('ws.audioscrobbler.com', 80, create_wsgi_app)
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lastfm import Api
class TestGroup(unittest.TestCase):
""" A test class for the Group module. """
def setUp(self):
apikey = "152a230561e72192b8b0f3e42362c6ff"
self.api = Api(apikey, no_cache = True)
self.group = self.api.get_group('Rock')
def tearDown(self):
pass
def testGroupName(self):
self.assertEqual(self.group.name, 'Rock')
def testGroupMembers(self):
members = ['Alaa10', 'ilovemusix', 'Bartuu', 'ABeyers', 'kaique1002',
'Thug4Life2Da', 'Fishuturek', 'JapanesBoy', 'rubenius90',
'230688']
self.assertEqual([m.name for m in self.group.members[:10]], members)
def testGroupWeeklyChartList(self):
wcl = [('Sun, 24 Sep 2006', 'Sun, 01 Oct 2006'),
('Sun, 01 Oct 2006', 'Sun, 08 Oct 2006'),
('Sun, 08 Oct 2006', 'Sun, 15 Oct 2006'),
('Sun, 15 Oct 2006', 'Sun, 22 Oct 2006'),
('Sun, 22 Oct 2006', 'Sun, 29 Oct 2006'),
('Sun, 29 Oct 2006', 'Sun, 05 Nov 2006'),
('Sun, 05 Nov 2006', 'Sun, 12 Nov 2006'),
('Sun, 12 Nov 2006', 'Sun, 19 Nov 2006'),
('Sun, 19 Nov 2006', 'Sun, 26 Nov 2006'),
('Sun, 26 Nov 2006', 'Sun, 03 Dec 2006')]
self.assertEqual(
[
(
wc.start.date().strftime('%a, %d %b %Y'),
wc.end.date().strftime('%a, %d %b %Y')
)
for wc in self.group.weekly_chart_list[:10]
],
wcl
)
def testGroupGetWeeklyArtistChart(self):
artists = ['Red Hot Chili Peppers',
'Led Zeppelin',
'Metallica',
'Pink Floyd',
'Queen',
"Guns N' Roses",
'AC/DC',
'The Beatles',
'Nirvana',
'Muse']
wc = self.group.weekly_chart_list[0]
self.assertEqual(
[artist.name
for artist in self.group.get_weekly_artist_chart(wc.start, wc.end).artists[:10]],
artists)
def testGroupGetWeeklyAlbumChart(self):
albums = [('By the Way', 'Red Hot Chili Peppers', 48),
('Toxicity', 'System of a Down', 48),
('Stadium Arcadium', 'Red Hot Chili Peppers', 43),
('OK Computer', 'Radiohead', 41),
('Absolution', 'Muse', 39),
('Californication', 'Red Hot Chili Peppers', 38),
('Back in Black', 'AC/DC', 37),
('Black Holes And Revelations', 'Muse', 37),
('Appetite for Destruction', "Guns N' Roses", 35),
('Meteora', 'Linkin Park', 35)]
wc = self.group.weekly_chart_list[0]
self.assertEqual(
[(album.name, album.artist.name, album.stats.playcount)
for album in self.group.get_weekly_album_chart(wc.start, wc.end).albums[:10]],
albums)
def testGroupGetWeeklyTrackChart(self):
tracks = [('Stairway to Heaven', 'Led Zeppelin', 36),
('Back in Black', 'AC/DC', 34),
('Enter Sandman', 'Metallica', 33),
('Dani California', 'Red Hot Chili Peppers', 33),
('Bohemian Rhapsody', 'Queen', 31),
('Welcome to the Jungle', "Guns N' Roses", 30),
('Supermassive Black Hole', 'Muse', 30),
('Wonderwall', 'Oasis', 29),
('Run to the Hills', 'Iron Maiden', 28),
('November Rain', "Guns N' Roses", 28)]
wc = self.group.weekly_chart_list[0]
self.assertEqual(
[(track.name, track.artist.name, track.stats.playcount)
for track in self.group.get_weekly_track_chart(wc.start, wc.end).tracks[:10]],
tracks)
def testGroupGetWeeklyTagChart(self):
tags = [('classic rock', 156),
('rock', 154),
('alternative', 130),
('british', 112),
('alternative rock', 110),
('hard rock', 78),
('metal', 63),
('psychedelic', 61),
('thrash metal', 54),
('heavy metal', 47)]
wc = self.group.weekly_chart_list[0]
self.assertEqual(
[(tag.name, tag.stats.count)
for tag
in self.group.get_weekly_tag_chart(wc.start, wc.end).tags[:10]],
tags)
test_suite = unittest.TestLoader().loadTestsFromTestCase(TestGroup)
if __name__ == '__main__':
unittest.main()