diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb index d37a5358e..f6eafdc76 100644 --- a/app/controllers/boards_controller.rb +++ b/app/controllers/boards_controller.rb @@ -22,7 +22,11 @@ class BoardsController < ApplicationController def create @board = Board.create! board_params.with_defaults(all_access: true) - redirect_to board_path(@board) + + respond_to do |format| + format.html { redirect_to board_path(@board) } + format.json { head :created, location: board_path(@board) } + end end def edit diff --git a/test/controllers/api_test.rb b/test/controllers/api_test.rb index f33dfe997..977a75dc5 100644 --- a/test/controllers/api_test.rb +++ b/test/controllers/api_test.rb @@ -21,10 +21,10 @@ class ApiTest < ActionDispatch::IntegrationTest assert_response :unauthorized post boards_path(format: :json), params: { board: { name: "My new board" } }, env: @davids_bearer_token - assert_response :redirect + assert_response :success end - test "boards" do + test "get boards" do get boards_path(format: :json), env: @davids_bearer_token assert_equal users(:david).boards.count, @response.parsed_body.count @@ -32,6 +32,14 @@ class ApiTest < ActionDispatch::IntegrationTest 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), @response.headers["Location"] + + get board_path(Board.last, format: :json), env: @davids_bearer_token + assert_equal "My new board", @response.parsed_body["name"] + end + private def bearer_token_env(token) { "HTTP_AUTHORIZATION" => "Bearer #{token}" }