Mercurial > hg > pmhd
diff Yading/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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Yading/musixmatch-master/tests/api.py Sat Apr 20 19:01:57 2013 +0200 @@ -0,0 +1,91 @@ +import unittest +from musixmatch import * +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO + +class TestError(unittest.TestCase): + + def test__str__(self): + error = api.Error('test error', Exception('test exception')) + self.assertEqual(str(error), 'test error: test exception') + +class TestResponseStatusCode(unittest.TestCase): + + def test__init__(self): + self.assertRaises(ValueError, api.ResponseStatusCode, 'fail') + + self.assertRaises(TypeError, api.ResponseStatusCode, [1,2,3]) + + def test__int__(self): + self.assertEqual(int(api.ResponseStatusCode('1')), 1) + + def test__str__(self): + self.assertEqual(str(api.ResponseStatusCode('200')), + 'The request was successful.') + + self.assertEqual(str(api.ResponseStatusCode('-1')), + 'Unknown status code -1!') + + def test__nonzero__(self): + self.assertEqual(bool(api.ResponseStatusCode('200')), True) + self.assertEqual(bool(api.ResponseStatusCode('404')), False) + +class TestResponseMessage(unittest.TestCase): + + def test__init__(self): + self.assertRaises(NotImplementedError, api.ResponseMessage, '') + +class TestXMLResponseMessage(unittest.TestCase): + + message = """<message> + <header> + <status_code>200</status_code> + </header> + <body> + </body> +</message>""" + + def test_status_code(self): + message = api.XMLResponseMessage(StringIO(self.message)) + self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True) + +class TestJsonResponseMessage(unittest.TestCase): + message = """{"message":{ + "header":{ + "status_code":200}, + "body":{ +}}}""" + + def test_status_code(self): + message = api.JsonResponseMessage(StringIO(self.message)) + self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True) + +class TestQueryString(unittest.TestCase): + def test__str__(self): + keywords = { 'country': 'it', 'page': 1, 'page_size': 3 } + query_string = api.QueryString(keywords) + self.assertEqual(str(query_string), 'country=it&page=1&page_size=3') + def test__repr__(self): + keywords = { 'apikey': 'it', 'id': 12345, 'format': 'json' } + query_string = api.QueryString(keywords) + self.assertEqual(repr(query_string).count('apikey'), 0) + +class TestRequest(unittest.TestCase): + def test__str__(self): + url = 'http://api.musixmatch.com/ws/1.1/test?apikey=apikey&format=format'.encode('utf-8') + method = api.Method('test') + query_string = api.QueryString({'apikey':'apikey','format':'format'}) + request = api.Request(method, query_string) + self.assertEqual(str(request), url) + +class TestMethod(unittest.TestCase): + + def test__getattribute__(self): + method = api.Method('test') + self.assertEqual(hasattr(method, 'subtest'), True) + self.assertEqual(hasattr(method, '__nothing__'), False) + +if __name__ == '__main__': + unittest.main()