diff --git a/test/controllers/api_test.rb b/test/controllers/api_test.rb index aa409de08..a48511cf8 100644 --- a/test/controllers/api_test.rb +++ b/test/controllers/api_test.rb @@ -24,62 +24,6 @@ class ApiTest < ActionDispatch::IntegrationTest assert_response :success end - test "get boards" do - get boards_path(format: :json), env: @davids_bearer_token - assert_equal users(:david).boards.count, @response.parsed_body.count - - get board_path(boards(:writebook), format: :json), env: @davids_bearer_token - assert_equal boards(:writebook).name, @response.parsed_body["name"] - end - - test "create board" do - post boards_path(format: :json), params: { board: { name: "My new board" } }, env: @davids_bearer_token - assert_equal board_path(Board.last, format: :json), @response.headers["Location"] - - get board_path(Board.last, format: :json), env: @davids_bearer_token - assert_equal "My new board", @response.parsed_body["name"] - end - - test "create card" do - post board_cards_path(boards(:writebook), format: :json), - params: { card: { title: "My new card", description: "Big if true", tag_ids: [ tags(:web).id, tags(:mobile).id ] } }, - env: @davids_bearer_token - - assert_equal card_path(Card.last, format: :json), @response.headers["Location"] - - new_card = Card.last - get card_path(new_card, format: :json), env: @davids_bearer_token - assert_equal "My new card", @response.parsed_body["title"] - assert_equal "Big if true", @response.parsed_body["description"] - assert_equal [ tags(:web).title, tags(:mobile).title ].sort, @response.parsed_body["tags"] - end - - test "get tags" do - tags = users(:david).account.tags.all.alphabetically - - get tags_path(format: :json), env: @davids_bearer_token - assert_equal tags.count, @response.parsed_body.count - assert_equal tags.pluck(:title), @response.parsed_body.pluck("title") - end - - test "get users" do - get users_path(format: :json), env: @davids_bearer_token - assert_equal users(:david).account.users.active.count, @response.parsed_body.count - - get user_path(users(:david), format: :json), env: @davids_bearer_token - assert_equal users(:david).name, @response.parsed_body["name"] - end - - test "get identity" do - identity = identities(:david) - - untenanted do - get identity_path(format: :json), env: @davids_bearer_token - assert_response :success - assert_equal identity.accounts.count, @response.parsed_body["accounts"].count - end - end - private def bearer_token_env(token) { "HTTP_AUTHORIZATION" => "Bearer #{token}" } diff --git a/test/controllers/boards_controller_test.rb b/test/controllers/boards_controller_test.rb index a7e3580de..6701b802d 100644 --- a/test/controllers/boards_controller_test.rb +++ b/test/controllers/boards_controller_test.rb @@ -190,4 +190,25 @@ class BoardsControllerTest < ActionDispatch::IntegrationTest assert_select "input.switch__input[name='user_ids[]'][value='#{david.id}'][disabled]" end end + + test "index as JSON" do + get boards_path, as: :json + assert_response :success + assert_equal users(:kevin).boards.count, @response.parsed_body.count + end + + test "show as JSON" do + get board_path(boards(:writebook)), as: :json + assert_response :success + assert_equal boards(:writebook).name, @response.parsed_body["name"] + end + + test "create as JSON" do + assert_difference -> { Board.count }, +1 do + post boards_path, params: { board: { name: "My new board" } }, as: :json + end + + assert_response :created + assert_equal board_path(Board.last, format: :json), @response.headers["Location"] + end end diff --git a/test/controllers/cards_controller_test.rb b/test/controllers/cards_controller_test.rb index ea5d4e50e..ba38fb191 100644 --- a/test/controllers/cards_controller_test.rb +++ b/test/controllers/cards_controller_test.rb @@ -132,4 +132,26 @@ class CardsControllerTest < ActionDispatch::IntegrationTest get card_path(card) assert_response :success end + + test "show as JSON" do + get card_path(cards(:logo)), as: :json + assert_response :success + assert_equal cards(:logo).title, @response.parsed_body["title"] + end + + test "create as JSON" do + assert_difference -> { Card.count }, +1 do + post board_cards_path(boards(:writebook)), + params: { card: { title: "My new card", description: "Big if true", tag_ids: [ tags(:web).id, tags(:mobile).id ] } }, + as: :json + end + + assert_response :created + assert_equal card_path(Card.last, format: :json), @response.headers["Location"] + + card = Card.last + assert_equal "My new card", card.title + assert_equal "Big if true", card.description.to_plain_text + assert_equal [ tags(:mobile), tags(:web) ].sort, card.tags.sort + end end diff --git a/test/controllers/identities_controller_test.rb b/test/controllers/identities_controller_test.rb new file mode 100644 index 000000000..8d6e9a2fb --- /dev/null +++ b/test/controllers/identities_controller_test.rb @@ -0,0 +1,17 @@ +require "test_helper" + +class IdentitiesControllerTest < ActionDispatch::IntegrationTest + setup do + sign_in_as :kevin + end + + test "show as JSON" do + identity = identities(:kevin) + + untenanted do + get identity_path, as: :json + assert_response :success + assert_equal identity.accounts.count, @response.parsed_body["accounts"].count + end + end +end diff --git a/test/controllers/tags_controller_test.rb b/test/controllers/tags_controller_test.rb new file mode 100644 index 000000000..e3685e60b --- /dev/null +++ b/test/controllers/tags_controller_test.rb @@ -0,0 +1,16 @@ +require "test_helper" + +class TagsControllerTest < ActionDispatch::IntegrationTest + setup do + sign_in_as :kevin + end + + test "index as JSON" do + tags = users(:kevin).account.tags.all.alphabetically + + get tags_path, as: :json + assert_response :success + assert_equal tags.count, @response.parsed_body.count + assert_equal tags.pluck(:title), @response.parsed_body.pluck("title") + end +end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 385bacaf3..ae00982e7 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -86,4 +86,20 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert users(:kevin).reload.avatar.attached? assert_equal "image/png", users(:kevin).avatar.content_type end + + test "index as JSON" do + sign_in_as :kevin + + get users_path, as: :json + assert_response :success + assert_equal users(:kevin).account.users.active.count, @response.parsed_body.count + end + + test "show as JSON" do + sign_in_as :kevin + + get user_path(users(:david)), as: :json + assert_response :success + assert_equal users(:david).name, @response.parsed_body["name"] + end end