require "test_helper" class RoomTest < ActiveSupport::TestCase test "grant membership to user" do rooms(:watercooler).memberships.grant_to(users(:kevin)) assert rooms(:watercooler).users.include?(users(:kevin)) end test "revoke membership from user" do rooms(:watercooler).memberships.revoke_from(users(:david)) assert_not rooms(:watercooler).users.include?(users(:david)) end test "revise memberships" do rooms(:watercooler).memberships.revise(granted: users(:kevin), revoked: users(:david)) assert rooms(:watercooler).users.include?(users(:kevin)) assert_not rooms(:watercooler).users.include?(users(:david)) end test "create for users by giving them immediate membership" do room = Rooms::Closed.create_for({ name: "Hello!", creator: users(:david) }, users: [ users(:kevin), users(:david) ]) assert room.users.include?(users(:kevin)) assert room.users.include?(users(:david)) end test "type" do assert Rooms::Open.new.open? assert_not Rooms::Open.new.direct? assert Rooms::Direct.new.direct? assert Rooms::Closed.new.closed? end test "default involvement for new users" do room = Rooms::Closed.create_for({ name: "Hello!", creator: users(:david) }, users: [ users(:kevin), users(:david) ]) assert room.memberships.all? { |m| m.involved_in_mentions? } end end