From: Anton Khorev Date: Thu, 13 Mar 2025 14:41:38 +0000 (+0300) Subject: Split api changeset subscription tests X-Git-Tag: live~4^2~2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/e763c82456f76170b0b743d39d3da3d910d38352?ds=inline Split api changeset subscription tests --- diff --git a/test/controllers/api/changeset_subscriptions_controller_test.rb b/test/controllers/api/changeset_subscriptions_controller_test.rb index f4c3836e6..bbf9d8dc8 100644 --- a/test/controllers/api/changeset_subscriptions_controller_test.rb +++ b/test/controllers/api/changeset_subscriptions_controller_test.rb @@ -23,93 +23,137 @@ module Api ) end - def test_create_success - auth_header = bearer_authorization_header + def test_create_by_unauthorized changeset = create(:changeset, :closed) - assert_difference "changeset.subscribers.count", 1 do - post api_changeset_subscription_path(changeset), :headers => auth_header - end - assert_response :success + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + post api_changeset_subscription_path(changeset) - # not closed changeset - changeset = create(:changeset) - assert_difference "changeset.subscribers.count", 1 do - post api_changeset_subscription_path(changeset), :headers => auth_header + assert_response :unauthorized + end end - assert_response :success end - def test_create_fail + def test_create_on_missing_changeset user = create(:user) + auth_header = bearer_authorization_header user - # unauthorized - changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(changeset) + assert_no_difference "ChangesetSubscription.count" do + post api_changeset_subscription_path(999111), :headers => auth_header + + assert_response :not_found end - assert_response :unauthorized + end + def test_create_when_subscribed + user = create(:user) auth_header = bearer_authorization_header user + changeset = create(:changeset, :closed) + changeset.subscribers << user - # bad changeset id - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(999111), :headers => auth_header + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :conflict + end end - assert_response :not_found + end - # trying to subscribe when already subscribed - changeset = create(:changeset, :closed) - changeset.subscribers.push(user) - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(changeset), :headers => auth_header + def test_create_on_open_changeset + user = create(:user) + auth_header = bearer_authorization_header user + changeset = create(:changeset) + + assert_difference "ChangesetSubscription.count", 1 do + assert_difference "changeset.subscribers.count", 1 do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :conflict end - def test_destroy_success + def test_create_on_closed_changeset user = create(:user) auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - changeset.subscribers.push(user) - assert_difference "changeset.subscribers.count", -1 do - delete api_changeset_subscription_path(changeset), :headers => auth_header + assert_difference "ChangesetSubscription.count", 1 do + assert_difference "changeset.subscribers.count", 1 do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :success + end - # not closed changeset - changeset = create(:changeset) - changeset.subscribers.push(user) + def test_destroy_by_unauthorized + changeset = create(:changeset, :closed) + + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + delete api_changeset_subscription_path(changeset) - assert_difference "changeset.subscribers.count", -1 do - delete api_changeset_subscription_path(changeset), :headers => auth_header + assert_response :unauthorized + end end - assert_response :success end - def test_destroy_fail - # unauthorized + def test_destroy_on_missing_changeset + user = create(:user) + auth_header = bearer_authorization_header user + + assert_no_difference "ChangesetSubscription.count" do + delete api_changeset_subscription_path(999111), :headers => auth_header + + assert_response :not_found + end + end + + def test_destroy_when_not_subscribed + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(changeset) + + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + delete api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :not_found + end end - assert_response :unauthorized + end - auth_header = bearer_authorization_header + def test_destroy_on_open_changeset + user = create(:user) + auth_header = bearer_authorization_header user + changeset = create(:changeset) + changeset.subscribers.push(user) - # bad changeset id - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(999111), :headers => auth_header + assert_difference "ChangesetSubscription.count", -1 do + assert_difference "changeset.subscribers.count", -1 do + delete api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :not_found + end - # trying to unsubscribe when not subscribed + def test_destroy_on_closed_changeset + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(changeset), :headers => auth_header + changeset.subscribers.push(user) + + assert_difference "ChangesetSubscription.count", -1 do + assert_difference "changeset.subscribers.count", -1 do + delete api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :not_found end end end