80 lines
2.4 KiB
Ruby
80 lines
2.4 KiB
Ruby
require "test_helper"
|
|
|
|
class BoardsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@game = games(:one)
|
|
# fixtureのgames(:one)はtitleだけの状態から修正されている前提だが、
|
|
# 念のためupdateして整合性を取る
|
|
@game.update!(
|
|
status: "in_progress",
|
|
participants_count: 7,
|
|
victory_sc_count: 18,
|
|
scoring_system: "none",
|
|
turn_schedule: "0,12"
|
|
)
|
|
|
|
@user = users(:austria)
|
|
@user_germany = users(:germany)
|
|
|
|
# 参加者作成
|
|
# BoardTest同様、fixtureに依存せずParticipantを作る
|
|
@p_austria = Participant.create!(game: @game, user: @user, power: "AUSTRIA")
|
|
@p_germany = Participant.create!(game: @game, user: @user_germany, power: "GERMANY")
|
|
|
|
# 共通掲示板作成
|
|
@game.boards.create!(board_type: "global", is_public: true)
|
|
end
|
|
|
|
test "should get index" do
|
|
login_as(@user)
|
|
get game_boards_url(@game)
|
|
assert_response :success
|
|
assert_select "h2", "外交・交渉掲示板"
|
|
end
|
|
|
|
test "should get new negotiation board" do
|
|
login_as(@user)
|
|
get new_game_board_url(@game)
|
|
assert_response :success
|
|
end
|
|
|
|
test "should create negotiation board" do
|
|
login_as(@user)
|
|
assert_difference("Board.count") do
|
|
post game_boards_url(@game), params: {
|
|
invited_participant_ids: [ @p_germany.id ]
|
|
}
|
|
end
|
|
|
|
assert_redirected_to game_board_url(@game, Board.last)
|
|
assert Board.last.member?(@p_austria)
|
|
assert Board.last.member?(@p_germany)
|
|
end
|
|
|
|
test "should show board" do
|
|
login_as(@user)
|
|
board = @game.boards.global.first
|
|
get game_board_url(@game, board)
|
|
assert_response :success
|
|
end
|
|
|
|
test "should not show board to non-member" do
|
|
# 第三者作成
|
|
user_russia = users(:russia)
|
|
p_russia = Participant.create!(game: @game, user: user_russia, power: "RUSSIA")
|
|
|
|
# オーストリアとドイツの掲示板
|
|
board = @game.boards.create!(board_type: "negotiation", created_by_participant_id: @p_austria.id)
|
|
board.board_memberships.create!(participant: @p_austria, joined_at: Time.current)
|
|
board.board_memberships.create!(participant: @p_germany, joined_at: Time.current)
|
|
|
|
# ロシアでログイン
|
|
login_as(user_russia)
|
|
get game_board_url(@game, board)
|
|
|
|
assert_redirected_to game_boards_url(@game)
|
|
follow_redirect!
|
|
assert_select "div[role='alert']", /権限がありません/
|
|
end
|
|
end
|