annotate musixmatch-master/tests/api.py @ 7:8c29444cb5fd

Just did some work
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Sat, 20 Apr 2013 19:01:57 +0200
parents
children
rev   line source
yading@7 1 import unittest
yading@7 2 from musixmatch import *
yading@7 3 try:
yading@7 4 from cStringIO import StringIO
yading@7 5 except ImportError:
yading@7 6 from StringIO import StringIO
yading@7 7
yading@7 8 class TestError(unittest.TestCase):
yading@7 9
yading@7 10 def test__str__(self):
yading@7 11 error = api.Error('test error', Exception('test exception'))
yading@7 12 self.assertEqual(str(error), 'test error: test exception')
yading@7 13
yading@7 14 class TestResponseStatusCode(unittest.TestCase):
yading@7 15
yading@7 16 def test__init__(self):
yading@7 17 self.assertRaises(ValueError, api.ResponseStatusCode, 'fail')
yading@7 18
yading@7 19 self.assertRaises(TypeError, api.ResponseStatusCode, [1,2,3])
yading@7 20
yading@7 21 def test__int__(self):
yading@7 22 self.assertEqual(int(api.ResponseStatusCode('1')), 1)
yading@7 23
yading@7 24 def test__str__(self):
yading@7 25 self.assertEqual(str(api.ResponseStatusCode('200')),
yading@7 26 'The request was successful.')
yading@7 27
yading@7 28 self.assertEqual(str(api.ResponseStatusCode('-1')),
yading@7 29 'Unknown status code -1!')
yading@7 30
yading@7 31 def test__nonzero__(self):
yading@7 32 self.assertEqual(bool(api.ResponseStatusCode('200')), True)
yading@7 33 self.assertEqual(bool(api.ResponseStatusCode('404')), False)
yading@7 34
yading@7 35 class TestResponseMessage(unittest.TestCase):
yading@7 36
yading@7 37 def test__init__(self):
yading@7 38 self.assertRaises(NotImplementedError, api.ResponseMessage, '')
yading@7 39
yading@7 40 class TestXMLResponseMessage(unittest.TestCase):
yading@7 41
yading@7 42 message = """<message>
yading@7 43 <header>
yading@7 44 <status_code>200</status_code>
yading@7 45 </header>
yading@7 46 <body>
yading@7 47 </body>
yading@7 48 </message>"""
yading@7 49
yading@7 50 def test_status_code(self):
yading@7 51 message = api.XMLResponseMessage(StringIO(self.message))
yading@7 52 self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True)
yading@7 53
yading@7 54 class TestJsonResponseMessage(unittest.TestCase):
yading@7 55 message = """{"message":{
yading@7 56 "header":{
yading@7 57 "status_code":200},
yading@7 58 "body":{
yading@7 59 }}}"""
yading@7 60
yading@7 61 def test_status_code(self):
yading@7 62 message = api.JsonResponseMessage(StringIO(self.message))
yading@7 63 self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True)
yading@7 64
yading@7 65 class TestQueryString(unittest.TestCase):
yading@7 66 def test__str__(self):
yading@7 67 keywords = { 'country': 'it', 'page': 1, 'page_size': 3 }
yading@7 68 query_string = api.QueryString(keywords)
yading@7 69 self.assertEqual(str(query_string), 'country=it&page=1&page_size=3')
yading@7 70 def test__repr__(self):
yading@7 71 keywords = { 'apikey': 'it', 'id': 12345, 'format': 'json' }
yading@7 72 query_string = api.QueryString(keywords)
yading@7 73 self.assertEqual(repr(query_string).count('apikey'), 0)
yading@7 74
yading@7 75 class TestRequest(unittest.TestCase):
yading@7 76 def test__str__(self):
yading@7 77 url = 'http://api.musixmatch.com/ws/1.1/test?apikey=apikey&format=format'.encode('utf-8')
yading@7 78 method = api.Method('test')
yading@7 79 query_string = api.QueryString({'apikey':'apikey','format':'format'})
yading@7 80 request = api.Request(method, query_string)
yading@7 81 self.assertEqual(str(request), url)
yading@7 82
yading@7 83 class TestMethod(unittest.TestCase):
yading@7 84
yading@7 85 def test__getattribute__(self):
yading@7 86 method = api.Method('test')
yading@7 87 self.assertEqual(hasattr(method, 'subtest'), True)
yading@7 88 self.assertEqual(hasattr(method, '__nothing__'), False)
yading@7 89
yading@7 90 if __name__ == '__main__':
yading@7 91 unittest.main()