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()
|