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(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(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, None) self.assertRaises(ValueError, musicbrainz._do_request, '') musicbrainz._headers['user-agent'] = None self.assertRaises(ValueError, musicbrainz._do_request, 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', [''])