public void ThrowExceptionWhenUserIsAlreadyInTheLobby() { //arrange var options = Utils.GetDbOptions("InviteUserShould_ThrowExceptionWhenUserIsAlreadyInTheLobby"); using (var context = new ApplicationDbContext(options)) { context.Lobbies.Add(new Lobby() { ID = 5 }); context.Users.Add(new User() { Id = "test_user" }); context.UserParticipationInLobbies.Add(new UserParticipationInLobby() { UserID = "test_user", LobbyID = 5 }); context.SaveChanges(); } //act & assert using (var context = new ApplicationDbContext(options)) { var lobbyInvitationSenderService = new Mock <ILobbyInvitationSenderService>(); var service = new LobbyService(context, lobbyInvitationSenderService.Object, null); Assert.Throws <InvalidOperationException>(() => service.InviteUser(5, "test_user")); } }
public void CallSenderServiceWithCorrectInvitationMessage() { //arrange var lobbyInvitationSenderService = new Mock <ILobbyInvitationSenderService>(); var options = Utils.GetDbOptions("InviteUserShould_CallSenderServiceWithCorrectInvitationMessage"); using (var context = new ApplicationDbContext(options)) { context.Lobbies.Add(new Lobby() { ID = 5, Name = "Lobby", OwnerID = "lobby_owner" }); context.Users.Add(new User() { Id = "test_user" }); context.Users.Add(new User() { Id = "lobby_owner", UserName = "******" }); context.SaveChanges(); } //act using (var context = new ApplicationDbContext(options)) { var service = new LobbyService(context, lobbyInvitationSenderService.Object, null); service.InviteUser(5, "test_user"); } //assert lobbyInvitationSenderService.Verify(mock => mock.SendInvitationToLobby( It.Is <string>(recipientId => recipientId == "test_user"), It.Is <LobbyInvitationMessage>(inv => inv.InvitingUserName == "LobbyOwner" && inv.LobbyId == 5 && inv.LobbyName == "Lobby"))); }