44 lines
1.5 KiB
Ruby
44 lines
1.5 KiB
Ruby
require "test_helper"
|
|
|
|
class Board::AccessibleTest < ActiveSupport::TestCase
|
|
test "revising access" do
|
|
boards(:writebook).update! all_access: false
|
|
|
|
boards(:writebook).accesses.revise granted: users(:david, :jz), revoked: users(:kevin)
|
|
assert_equal users(:david, :jz).to_set, boards(:writebook).users.to_set
|
|
|
|
boards(:writebook).accesses.grant_to users(:kevin)
|
|
assert_includes boards(:writebook).users.reload, users(:kevin)
|
|
|
|
boards(:writebook).accesses.revoke_from users(:kevin)
|
|
assert_not_includes boards(:writebook).users.reload, users(:kevin)
|
|
end
|
|
|
|
test "grants access to everyone after creation" do
|
|
board = Current.set(session: sessions(:david), user: users(:david)) do
|
|
Board.create! name: "New board", all_access: true
|
|
end
|
|
assert_equal accounts("37s").users.active.sort, board.users.sort
|
|
end
|
|
|
|
test "grants access to everyone after update" do
|
|
board = Current.set(session: sessions(:david), user: users(:david)) do
|
|
Board.create! name: "New board"
|
|
end
|
|
assert_equal [ users(:david) ], board.users
|
|
|
|
board.update! all_access: true
|
|
assert_equal accounts("37s").users.active.sort, board.users.reload.sort
|
|
end
|
|
|
|
test "board watchers" do
|
|
boards(:writebook).access_for(users(:kevin)).watching!
|
|
assert_includes boards(:writebook).watchers, users(:kevin)
|
|
|
|
boards(:writebook).access_for(users(:kevin)).access_only!
|
|
assert_not_includes boards(:writebook).reload.watchers, users(:kevin)
|
|
end
|
|
|
|
# NOTE: The tests for clearing inaccessible data are in +AccessTest+
|
|
end
|