Previously there were `hide` and `unhide` actions on changeset comments and an 
attempt to change them into standard actions which didn't quite work. It 
went like this: hiding a comment is like deleting, let's map `hide` path to 
`destroy` action; unhiding is like... there's no standard 
undelete/undestroy, let's invent another nonstandard `restore` name for 
now. `create` couldn't be used as an opposite action because it creates a 
new comment.

However `destroy` and `create` could be used if another resource is introduced. 
That's what this PR does. Since these operations change `visible` 
attributes, I guess the resource name should be `visibility`. Then we'll 
have something similar to message `read_mark` from #5536 that can be created 
and deleted and also changes an attribute.

That requires a different path. Since the collection path was already 
introduced in #4359 as `/api/0.6/changeset_comments`, the visibility resource 
path should be`/api/0.6/changeset_comments/:id/visibility`. `DELETE`/`POST` at 
this path hide/unhide the comment. For backwards compatibility `POST 
/api/0.6/changeset/comment/:id/hide` is mapped to `destroy` and `POST 
/api/0.6/changeset/comment/:id/unhide` is mapped to `create` actions on 
visibility.

This removes all nonstandard actions from changeset comments controller.
You can view, comment on, or merge this pull request online at:

  https://github.com/openstreetmap/openstreetmap-website/pull/5726

-- Commit Summary --

  * Test response body of changeset comment hide/unhide
  * Create api changeset comment visibility resource
  * Refactor api changeset comment visibility xml tests
  * Refactor api changeset comment visibility json tests
  * Test api changeset comment hide/unhide at legacy routes
  * Remove unnecessary RuboCop exclusion

-- File Changes --

    M .rubocop.yml (1)
    M app/abilities/api_ability.rb (2)
    A app/controllers/api/changeset_comments/visibilities_controller.rb (60)
    M app/controllers/api/changeset_comments_controller.rb (50)
    M app/controllers/api/changesets_controller.rb (2)
    A app/views/api/changeset_comments/visibilities/create.json.jbuilder (5)
    A app/views/api/changeset_comments/visibilities/create.xml.builder (5)
    A app/views/api/changeset_comments/visibilities/destroy.json.jbuilder (5)
    A app/views/api/changeset_comments/visibilities/destroy.xml.builder (5)
    M app/views/changesets/show.html.erb (4)
    M config/routes.rb (8)
    M test/abilities/api_capability_test.rb (28)
    A test/controllers/api/changeset_comments/visibilities_controller_test.rb 
(253)
    M test/controllers/api/changeset_comments_controller_test.rb (130)

-- Patch Links --

https://github.com/openstreetmap/openstreetmap-website/pull/5726.patch
https://github.com/openstreetmap/openstreetmap-website/pull/5726.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/5726
You are receiving this because you are subscribed to this thread.

Message ID: <openstreetmap/openstreetmap-website/pull/5...@github.com>
_______________________________________________
rails-dev mailing list
rails-dev@openstreetmap.org
https://lists.openstreetmap.org/listinfo/rails-dev

Reply via email to