45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import redis
|
|
from django.test import TestCase
|
|
|
|
from fetcher import musicbrainz
|
|
|
|
|
|
class MusicBrainzTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
redis.Redis().flushall()
|
|
|
|
def test_can_do_basic_request(self):
|
|
artist_url = 'https://musicbrainz.org/ws/2/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab'
|
|
musicbrainz._do_request_mb(artist_url)
|
|
|
|
def test_do_request_response_format(self):
|
|
artist_url = 'https://musicbrainz.org/ws/2/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab'
|
|
response = musicbrainz._do_request_mb(artist_url)
|
|
self.assertIsInstance(response, dict)
|
|
self.assertEquals(response['status'], 200)
|
|
self.assertIsInstance(response['response'], dict)
|
|
|
|
def test_do_request_input_validation(self):
|
|
artist_url = 'https://musicbrainz.org/ws/2/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab'
|
|
self.assertRaises(ValueError, musicbrainz._do_request_mb, None)
|
|
self.assertRaises(ValueError, musicbrainz._do_request_mb, '')
|
|
musicbrainz._headers['user-agent'] = None
|
|
self.assertRaises(ValueError, musicbrainz._do_request_mb, artist_url)
|
|
|
|
def test_cache(self):
|
|
def fun():
|
|
return {}
|
|
|
|
musicbrainz.cache(fun)()
|
|
self.assertTrue(redis.Redis().keys('*') is not None)
|
|
self.assertEquals(musicbrainz.cache(fun)(), {})
|
|
|
|
redis.Redis().set('fun, [[], {}]', '{"test": true}')
|
|
self.assertEquals(musicbrainz.cache(fun)(), {"test": True})
|
|
|
|
def fun(a, b):
|
|
return {}
|
|
|
|
musicbrainz.cache(fun)('word', [''])
|