예제 #1
0
        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"));
            }
        }
예제 #2
0
        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")));
        }