]> git.openstreetmap.org Git - rails.git/commitdiff
Split api changeset subscription tests
authorAnton Khorev <tony29@yandex.ru>
Thu, 13 Mar 2025 14:41:38 +0000 (17:41 +0300)
committerAnton Khorev <tony29@yandex.ru>
Fri, 14 Mar 2025 17:09:55 +0000 (20:09 +0300)
test/controllers/api/changeset_subscriptions_controller_test.rb

index f4c3836e6b2c95f9bab88ae6f03b495d21fa422d..bbf9d8dc8ae0533356dbf3bd9f0cef302d8d2e9e 100644 (file)
@@ -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