public void MakesAllUsersAllowed()
{
var repository = new InMemoryRepository();
var creator = new ChatUser
{
Name = "foo"
};
var users = Enumerable.Range(0, 5).Select(i => new ChatUser
{
Name = "user_" + i
}).ToList();
var offlineUsers = Enumerable.Range(6, 10).Select(i => new ChatUser
{
Name = "user_" + i,
Status = (int)UserStatus.Offline
}).ToList();
var room = new ChatRoom
{
Name = "room",
Creator = creator
};
room.Owners.Add(creator);
creator.OwnedRooms.Add(room);
repository.Add(room);
foreach (var u in users)
{
room.Users.Add(u);
u.Rooms.Add(room);
repository.Add(u);
}
foreach (var u in offlineUsers)
{
room.Users.Add(u);
u.Rooms.Add(room);
repository.Add(u);
}
var service = new ChatService(repository, new Mock<ICryptoService>().Object);
service.LockRoom(creator, room);
foreach (var u in users)
{
Assert.True(u.AllowedRooms.Contains(room));
Assert.True(room.AllowedUsers.Contains(u));
}
foreach (var u in offlineUsers)
{
Assert.False(u.AllowedRooms.Contains(room));
Assert.False(room.AllowedUsers.Contains(u));
}
}