Files
fizzy/test/controllers/boards/publications_controller_test.rb

78 lines
1.9 KiB
Ruby

require "test_helper"
class Boards::PublicationsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in_as :kevin
@board = boards(:writebook)
end
test "publish a board" do
assert_not @board.published?
assert_changes -> { @board.reload.published? }, from: false, to: true do
post board_publication_path(@board, format: :turbo_stream)
end
assert_turbo_stream action: :replace, target: dom_id(@board, :publication)
end
test "unpublish a board" do
@board.publish
assert @board.published?
assert_changes -> { @board.reload.published? }, from: true, to: false do
delete board_publication_path(@board, format: :turbo_stream)
end
assert_turbo_stream action: :replace, target: dom_id(@board, :publication)
end
test "publish a board via JSON" do
assert_not @board.published?
assert_changes -> { @board.reload.published? }, from: false, to: true do
post board_publication_path(@board), as: :json
end
assert_response :created
body = @response.parsed_body
@board.reload
assert_equal @board.name, body["name"]
assert_equal published_board_url(@board), body["public_url"]
end
test "unpublish a board via JSON" do
@board.publish
assert @board.published?
assert_changes -> { @board.reload.published? }, from: true, to: false do
delete board_publication_path(@board), as: :json
end
assert_response :no_content
end
test "publish requires board admin permission" do
logout_and_sign_in_as :jz
assert_not @board.published?
post board_publication_path(@board, format: :turbo_stream)
assert_response :forbidden
assert_not @board.reload.published?
end
test "unpublish requires board admin permission" do
logout_and_sign_in_as :jz
@board.publish
assert @board.published?
delete board_publication_path(@board, format: :turbo_stream)
assert_response :forbidden
assert @board.reload.published?
end
end