yading@7: import unittest yading@7: from musixmatch import * yading@7: try: yading@7: from cStringIO import StringIO yading@7: except ImportError: yading@7: from StringIO import StringIO yading@7: yading@7: class TestError(unittest.TestCase): yading@7: yading@7: def test__str__(self): yading@7: error = api.Error('test error', Exception('test exception')) yading@7: self.assertEqual(str(error), 'test error: test exception') yading@7: yading@7: class TestResponseStatusCode(unittest.TestCase): yading@7: yading@7: def test__init__(self): yading@7: self.assertRaises(ValueError, api.ResponseStatusCode, 'fail') yading@7: yading@7: self.assertRaises(TypeError, api.ResponseStatusCode, [1,2,3]) yading@7: yading@7: def test__int__(self): yading@7: self.assertEqual(int(api.ResponseStatusCode('1')), 1) yading@7: yading@7: def test__str__(self): yading@7: self.assertEqual(str(api.ResponseStatusCode('200')), yading@7: 'The request was successful.') yading@7: yading@7: self.assertEqual(str(api.ResponseStatusCode('-1')), yading@7: 'Unknown status code -1!') yading@7: yading@7: def test__nonzero__(self): yading@7: self.assertEqual(bool(api.ResponseStatusCode('200')), True) yading@7: self.assertEqual(bool(api.ResponseStatusCode('404')), False) yading@7: yading@7: class TestResponseMessage(unittest.TestCase): yading@7: yading@7: def test__init__(self): yading@7: self.assertRaises(NotImplementedError, api.ResponseMessage, '') yading@7: yading@7: class TestXMLResponseMessage(unittest.TestCase): yading@7: yading@7: message = """ yading@7:
yading@7: 200 yading@7:
yading@7: yading@7: yading@7:
""" yading@7: yading@7: def test_status_code(self): yading@7: message = api.XMLResponseMessage(StringIO(self.message)) yading@7: self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True) yading@7: yading@7: class TestJsonResponseMessage(unittest.TestCase): yading@7: message = """{"message":{ yading@7: "header":{ yading@7: "status_code":200}, yading@7: "body":{ yading@7: }}}""" yading@7: yading@7: def test_status_code(self): yading@7: message = api.JsonResponseMessage(StringIO(self.message)) yading@7: self.assertEqual(isinstance(message.status_code, api.ResponseStatusCode), True) yading@7: yading@7: class TestQueryString(unittest.TestCase): yading@7: def test__str__(self): yading@7: keywords = { 'country': 'it', 'page': 1, 'page_size': 3 } yading@7: query_string = api.QueryString(keywords) yading@7: self.assertEqual(str(query_string), 'country=it&page=1&page_size=3') yading@7: def test__repr__(self): yading@7: keywords = { 'apikey': 'it', 'id': 12345, 'format': 'json' } yading@7: query_string = api.QueryString(keywords) yading@7: self.assertEqual(repr(query_string).count('apikey'), 0) yading@7: yading@7: class TestRequest(unittest.TestCase): yading@7: def test__str__(self): yading@7: url = 'http://api.musixmatch.com/ws/1.1/test?apikey=apikey&format=format'.encode('utf-8') yading@7: method = api.Method('test') yading@7: query_string = api.QueryString({'apikey':'apikey','format':'format'}) yading@7: request = api.Request(method, query_string) yading@7: self.assertEqual(str(request), url) yading@7: yading@7: class TestMethod(unittest.TestCase): yading@7: yading@7: def test__getattribute__(self): yading@7: method = api.Method('test') yading@7: self.assertEqual(hasattr(method, 'subtest'), True) yading@7: self.assertEqual(hasattr(method, '__nothing__'), False) yading@7: yading@7: if __name__ == '__main__': yading@7: unittest.main()