Add destroy note subscription api endpoint

This commit is contained in:
Anton Khorev 2024-10-24 04:46:57 +03:00
parent edd12c6995
commit 53a33110f0
4 changed files with 76 additions and 2 deletions

View file

@ -7,6 +7,10 @@ module Api
{ :path => "/api/0.6/notes/1/subscription", :method => :post },
{ :controller => "api/note_subscriptions", :action => "create", :note_id => "1" }
)
assert_routing(
{ :path => "/api/0.6/notes/1/subscription", :method => :delete },
{ :controller => "api/note_subscriptions", :action => "destroy", :note_id => "1" }
)
end
def test_create
@ -73,5 +77,66 @@ module Api
end
assert_match "already subscribed", @response.body
end
def test_destroy
user = create(:user)
auth_header = bearer_authorization_header user
other_user = create(:user)
note = create(:note_with_comments)
other_note = create(:note_with_comments)
create(:note_subscription, :user => user, :note => note)
create(:note_subscription, :user => other_user, :note => note)
create(:note_subscription, :user => user, :note => other_note)
assert_difference "NoteSubscription.count", -1 do
assert_difference "note.subscribers.count", -1 do
delete api_note_subscription_path(note), :headers => auth_header
assert_response :success
end
end
note.reload
assert_equal [other_user], note.subscribers
assert_equal [user], other_note.subscribers
end
def test_destroy_fail_anonymous
note = create(:note_with_comments)
delete api_note_subscription_path(note)
assert_response :unauthorized
end
def test_destroy_fail_no_scope
user = create(:user)
auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
note = create(:note_with_comments)
create(:note_subscription, :user => user, :note => note)
assert_no_difference "NoteSubscription.count" do
assert_no_difference "note.subscribers.count" do
delete api_note_subscription_path(note), :headers => auth_header
assert_response :forbidden
end
end
end
def test_destroy_fail_note_not_found
user = create(:user)
auth_header = bearer_authorization_header user
delete api_note_subscription_path(999111), :headers => auth_header
assert_response :not_found
assert_match "not found", @response.body
end
def test_destroy_fail_not_subscribed
user = create(:user)
auth_header = bearer_authorization_header user
note = create(:note_with_comments)
delete api_note_subscription_path(note), :headers => auth_header
assert_response :not_found
assert_match "not subscribed", @response.body
end
end
end