Fix PUT api/project/:code/members/:id

Before that commit, every PUT *must* change the name of the members, so that was :
- no idempotence,
- no ability to change only weight

fix #295
This commit is contained in:
Jocelyn Delalande 2017-12-27 13:18:15 +01:00
parent 0189313c1f
commit 9e2a4ce21b
3 changed files with 17 additions and 2 deletions

View file

@ -37,6 +37,11 @@ Added
- Dockerfile
- Documentation explaining the upgrade process
Fixed
=====
- Fix `PUT api/project/:code/members/:id` API endpoint (#295)
Removed
=======

View file

@ -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)

View file

@ -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