diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 35cf91c0..4c12ba28 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -37,6 +37,11 @@ Added - Dockerfile - Documentation explaining the upgrade process +Fixed +===== + +- Fix `PUT api/project/:code/members/:id` API endpoint (#295) + Removed ======= diff --git a/ihatemoney/api.py b/ihatemoney/api.py index 82380fdd..84f454e4 100644 --- a/ihatemoney/api.py +++ b/ihatemoney/api.py @@ -79,7 +79,7 @@ class MemberHandler(object): return 400, form.errors def update(self, project, member_id): - form = MemberForm(project, meta={'csrf': False}) + form = MemberForm(project, meta={'csrf': False}, edit=True) if form.validate(): member = Person.query.get(member_id, project) form.save(project, member) diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py index 6708ca8f..97e9df3d 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -1155,7 +1155,8 @@ class APITestCase(IhatemoneyTestCase): # edit this member req = self.client.put("/api/projects/raclette/members/1", data={ - "name": "Fred" + "name": "Fred", + "weight": 2, }, headers=self.get_auth("raclette")) self.assertStatus(200, req) @@ -1166,6 +1167,15 @@ class APITestCase(IhatemoneyTestCase): self.assertStatus(200, req) self.assertEqual("Fred", json.loads(req.data.decode('utf-8'))["name"]) + self.assertEqual(2, json.loads(req.data.decode('utf-8'))["weight"]) + + # edit this member with same information + # (test PUT idemopotence) + req = self.client.put("/api/projects/raclette/members/1", data={ + "name": "Fred" + }, headers=self.get_auth("raclette")) + + self.assertStatus(200, req) # delete a member @@ -1175,7 +1185,6 @@ class APITestCase(IhatemoneyTestCase): self.assertStatus(200, req) # the list of members should be empty - # get the list of members (should be empty) req = self.client.get("/api/projects/raclette/members", headers=self.get_auth("raclette"))