Esempio n. 1
0
        public async Task ReturnGameSuccessfully()
        {
            var login           = new LoginBuilder().Build();
            var loginRepository = new LoginRepositoryBuilder().Build();
            var gameService     = new GameServiceBuilder(loginRepository).Build();
            var friendService   = new FriendServiceBuilder(loginRepository).Build();

            await loginRepository.Add(login);

            await gameService.Add(_gameDto, login.Id);

            await friendService.Add(_friendDto, login.Id);

            var insertedGame   = login.Games.Single();
            var insertedFriend = login.Friends.Single();

            var gameLoanDto = new GameLoanDto(insertedGame.Id, insertedFriend.Id);
            await gameService.Lend(gameLoanDto, login.Id);

            var gameReturnDto = new GameReturnDto(insertedGame.Id);
            var result        = await gameService.Return(gameReturnDto, login.Id);

            Assert.True(result.Success);
            Assert.Null(insertedGame.FriendId);
        }
Esempio n. 2
0
        public async Task <Result> Lend(GameLoanDto gameLoanDto, int loginId)
        {
            try
            {
                var login = await GetLoginIfExists(loginId);

                var game   = GetGame(login, gameLoanDto.GameId);
                var friend = GetFriend(login, gameLoanDto.FriendId);

                if (game.FriendId != null)
                {
                    return(new Result(false, "This game is already lent"));
                }

                login.LendGame(game.Id, friend.Id);

                await _loginRepository.Update(login);

                return(new Result(true, "Game lent"));
            }
            catch (Exception exception)
            {
                return(new Result(false, exception.Message));
            }
        }
Esempio n. 3
0
        public async Task <ActionResult <Result> > Lend(GameLoanDto gameLoanDto)
        {
            var loginId = await GetLoginId();

            var result = await _gameService.Lend(gameLoanDto, loginId);

            return(Ok(result));
        }
Esempio n. 4
0
        public async Task DontLendGameThatIsAlreadyLent()
        {
            var login           = new LoginBuilder().Build();
            var loginRepository = new LoginRepositoryBuilder().Build();
            var gameService     = new GameServiceBuilder(loginRepository).Build();
            var friendService   = new FriendServiceBuilder(loginRepository).Build();

            await loginRepository.Add(login);

            await gameService.Add(_gameDto, login.Id);

            await friendService.Add(_friendDto, login.Id);

            var insertedGame   = login.Games.Single();
            var insertedFriend = login.Friends.Single();

            var gameLoanDto = new GameLoanDto(insertedGame.Id, insertedFriend.Id);
            await gameService.Lend(gameLoanDto, login.Id);

            // Try to lend again
            var result = await gameService.Lend(gameLoanDto, login.Id);

            Assert.False(result.Success);
        }