Skip to content

Commit 40f8332

Browse files
committed
adding possibility to search on a endpoint only object + changing resource
1 parent 1f7651a commit 40f8332

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

onepyece/interface.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ def update_dict_recursively(self, data_object):
7272
else:
7373
self.__dict__[key] = value
7474

75-
def search(self, search=None, resource=None):
75+
def search(self, search, resource=None):
7676
if self.search_term is None and self.resource is None:
77-
pass
77+
return API(self.endpoint, search, resource)
78+
raise ValueError(f"You can't instantiate a search API object because you already have {self.search_term} as search and {self.resource} as resource")
79+
80+
def edit_resource(self, resource):
81+
if self.search is None:
82+
raise ValueError('You can\'t change the resource without search use the method search()')
83+
self.__dict__ = API(self.endpoint, self.search_term, resource).__dict__

tests/test_interface.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,21 @@ def test_iterate_object(self):
5858
def test_recursive_dict(self):
5959
api_object = interface.API('hakis', 'characters_id', 1)
6060
self.assertIsInstance(api_object[0].characters.haki_character, interface.API)
61+
62+
def test_search_method(self):
63+
api_object = interface.API('characters').search('job', 'capitaine')
64+
self.assertEqual(api_object[1].french_name, 'Cavendish')
65+
66+
def test_search_method_with_search(self):
67+
with self.assertRaises(ValueError):
68+
interface.API('characters', 'count').search('job', 'capitaine')
69+
70+
def test_search_method_with_search_and_resource(self):
71+
with self.assertRaises(ValueError):
72+
interface.API('characters', 'status', 'décédé').search('job', 'capitaine')
73+
74+
def test_edit_resource(self):
75+
api_object = interface.API('characters', 'name', 'luffy')
76+
self.assertEqual(api_object.french_name, 'Monkey D Luffy')
77+
api_object.edit_resource('zoro')
78+
self.assertEqual(api_object.french_name, 'Roronoa Zoro')

0 commit comments

Comments
 (0)