yading@7: import unittest yading@7: from musixmatch import * yading@7: yading@7: class TestBase(unittest.TestCase): yading@7: yading@7: Class = base.Base yading@7: def test_label(self): yading@7: self.assertEqual(self.Class.label(), self.Class.__name__.lower()) yading@7: yading@7: class TestItem(TestBase): yading@7: Class = base.Item yading@7: item = { "item_id": "9673" } yading@7: item_str = "{ 'item_id': '9673'}" yading@7: item_repr = "Item({'item_id': '9673'})" yading@7: item_hash = 9673 yading@7: item_id = 'item_id' yading@7: yading@7: # def test_fromResponseMessage(self): yading@7: # self.assertRaises(api.Error, yading@7: # self.Class.fromResponseMessage, self.fail) yading@7: # success = self.Class.fromResponseMessage(self.success) yading@7: # self.assertEqual(success[item_id], yading@7: # self.success['body'][self.label()][self.item_id]) yading@7: def test_fromDictionary(self): yading@7: item = self.Class.fromDictionary(self.item) yading@7: # Data integrity yading@7: for k in self.item.keys(): yading@7: self.assertEqual(item[k], self.item[k]) yading@7: yading@7: def test__str__(self): yading@7: item = self.Class.fromDictionary(self.item) yading@7: self.assertEqual(str(item),self.item_str) yading@7: yading@7: def test__repr__(self): yading@7: item = self.Class.fromDictionary(self.item) yading@7: self.assertEqual(repr(item),self.item_repr) yading@7: yading@7: def test__hash__(self): yading@7: item = self.Class.fromDictionary(self.item) yading@7: self.assertEqual(hash(item), self.item_hash) yading@7: yading@7: class TestCollection(unittest.TestCase): yading@7: yading@7: Class = base.ItemsCollection yading@7: AllowedContent = base.ItemsCollection.allowedin() yading@7: item_list = 'item_list' yading@7: item_id = 'item_id' yading@7: item = 'item' yading@7: message = { yading@7: "body": { yading@7: "item_list": [ yading@7: { yading@7: "item": { yading@7: "item_id": "292", yading@7: "item_name": "item_292" yading@7: } yading@7: }, yading@7: { yading@7: "item": { yading@7: "item_id": "8976", yading@7: "item_name": "item_8976" yading@7: } yading@7: }, yading@7: { yading@7: "item": { yading@7: "item_id": "9673", yading@7: "item_name": "item_9673" yading@7: } yading@7: } yading@7: ] yading@7: }, yading@7: "header": { yading@7: "execute_time": 0.14144802093506001, yading@7: "status_code": 200 yading@7: } yading@7: } yading@7: yading@7: def test_insert(self): yading@7: collection = self.Class() yading@7: saved = self.message['body'][self.item_list][0][self.item] yading@7: item = self.AllowedContent(saved) yading@7: collection.insert(0, item) yading@7: # Item correctly inserted yading@7: self.assertEqual(collection[0], item) yading@7: yading@7: saved = self.message['body'][self.item_list][1][self.item] yading@7: collection.insert(0, saved) yading@7: # Item corectly casted to self.AllowedContent yading@7: self.assertEqual(type(collection[0]), self.AllowedContent) yading@7: # Item content integrity yading@7: self.assertEqual(collection[0][self.item_id], saved[self.item_id]) yading@7: # Previously inserted item has shifted position yading@7: self.assertEqual(collection[1], item) yading@7: yading@7: def test_append(self): yading@7: collection = self.Class() yading@7: saved = self.message['body'][self.item_list][1][self.item] yading@7: item = self.AllowedContent.fromDictionary(saved) yading@7: collection.append(item) yading@7: # Item correctly appended yading@7: self.assertEqual(collection[0], item) yading@7: yading@7: saved = self.message['body'][self.item_list][2][self.item] yading@7: collection.append(saved) yading@7: # Item correctly appended yading@7: self.assertEqual(collection[1][self.item_id], saved[self.item_id]) yading@7: yading@7: saved = self.message['body'][self.item_list][0][self.item] yading@7: collection.append(saved) yading@7: # Item corectly casted to self.AllowedContent yading@7: self.assertEqual(type(collection[2]), self.AllowedContent) yading@7: # Item content integrity yading@7: self.assertEqual(collection[2][self.item_id], saved[self.item_id]) yading@7: yading@7: def test_extend(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection = self.Class(self.AllowedContent(items[0])) yading@7: self.assertEqual(type(collection[0]), self.AllowedContent) yading@7: typed = [ self.AllowedContent(i) for i in items[1:] ] yading@7: for i in typed: yading@7: self.assertEqual(type(i), self.AllowedContent) yading@7: collection.extend(typed) yading@7: # Collection correctly extended yading@7: self.assertEqual(collection[1], typed[0]) yading@7: self.assertEqual(collection[2], typed[1]) yading@7: yading@7: row = items[:2] + items[1:3] yading@7: collection.extend(row) yading@7: # Items content integrity: no duplicate yading@7: self.assertEqual(len(collection), 3) yading@7: yading@7: collection = self.Class() yading@7: collection.extend(row) yading@7: self.assertEqual(len(row), 4) yading@7: self.assertEqual(len(collection), 3) yading@7: # Items corectly casted to self.AllowedContent yading@7: for i in range(3): yading@7: self.assertEqual(type(collection[i]), self.AllowedContent) yading@7: yading@7: # def test__setitem__(self): yading@7: # collection = self.Class(self.AllowedContent( yading@7: # self.message['body'][self.item_list][1][self.item])) yading@7: # saved = self.message['body'][self.item_list][2][self.item] yading@7: # item = self.AllowedContent(saved) yading@7: # collection[0] = item yading@7: # # Index of ItemsCollection correctly set yading@7: # self.assertEqual(collection[0], item) yading@7: yading@7: # saved = self.message['body'][self.item_list][0][self.item] yading@7: # collection[0] = saved yading@7: # # Item corectly casted to self.AllowedContent yading@7: # self.assertEqual(type(collection[0]),self.AllowedContent) yading@7: # # Item content integrity yading@7: # self.assertEqual(collection[0][self.item_id], saved[self.item_id]) yading@7: # # Wrong setting yading@7: # self.assertRaises(IndexError, collection.__setitem__, 9, saved) yading@7: # self.assertRaises(TypeError, collection.__setitem__, 'test', saved) yading@7: yading@7: def test_page(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection = self.Class(*items) yading@7: self.assertEqual(len(collection), 3) yading@7: for i in range(3): yading@7: self.assertEqual(type(collection[i]), self.AllowedContent) yading@7: page = collection.page(1,2) yading@7: self.assertEqual(len(page), 1) yading@7: self.assertEqual(type(page), self.Class) yading@7: self.assertEqual(type(page[0]), self.AllowedContent) yading@7: yading@7: def test_pages(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection = self.Class(*items) yading@7: self.assertEqual(len(collection), 3) yading@7: pages = collection.pages(2) yading@7: self.assertEqual(pages, 2) yading@7: yading@7: def test_paged(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection = self.Class(*items) yading@7: self.assertEqual(len(collection), 3) yading@7: for i in range(3): yading@7: self.assertEqual(type(collection[i]), self.AllowedContent) yading@7: paged = collection.paged(2) yading@7: self.assertEqual(len(paged), 2) yading@7: for i,l in zip(range(2), (2,1)): yading@7: self.assertEqual(len(paged[i]), l) yading@7: self.assertEqual(type(paged[i]), self.Class) yading@7: for p,i in [(0,0),(0,1),(1,0)]: yading@7: self.assertEqual(id(paged[p][i]), id(collection[(2*p)+i])) yading@7: yading@7: def test_pager(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection = self.Class(*items) yading@7: self.assertEqual(len(collection), 3) yading@7: for i in range(3): yading@7: self.assertEqual(type(collection[i]), self.AllowedContent) yading@7: pager = [] yading@7: for page in collection.pager(2): yading@7: self.assertEqual(type(page), self.Class) yading@7: self.assertEqual(type(page[0]), self.AllowedContent) yading@7: pager.append(page) yading@7: self.assertEqual(len(pager), 2) yading@7: self.assertEqual(len(pager[0]), 2) yading@7: self.assertEqual(len(pager[1]), 1) yading@7: yading@7: def test__add__(self): yading@7: items = [ i[self.item] for i in self.message['body'][self.item_list] ] yading@7: collection1 = self.Class(*items[:2]) yading@7: collection2 = self.Class(*items[1:3]) yading@7: collection3 = collection1 + collection2 yading@7: # Collection correctly created yading@7: self.assertEqual(type(collection3), self.Class) yading@7: self.assertEqual(len(collection3), 3) yading@7: