aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.rst5
-rw-r--r--ihatemoney/api.py2
-rw-r--r--ihatemoney/tests/tests.py13
3 files changed, 17 insertions, 3 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 35cf91c..4c12ba2 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 82380fd..84f454e 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 6708ca8..97e9df3 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"))