public async Task DeleteGame_WhenCurrentGameIsNotFound_ShouldReturnNotFoundResult()
        {
            // Arrange
            var  gameRepository = A.Fake <IGameRepository>();
            Game?game           = null;

            A.CallTo(() => gameRepository.GetGameAsync(A <int> .Ignored)).Returns(game);

            var sharedRepository = A.Fake <ISharedRepository>();
            var mapper           = A.Fake <IMapper>();
            var linkGenerator    = A.Fake <LinkGenerator>();
            var gameService      = A.Fake <IGameService>();

            var testController =
                new GamesController(gameRepository, sharedRepository, mapper, linkGenerator, gameService);

            int id = 1;

            // Act
            var result = await testController.DeleteGame(id);

            // Assert
            A.CallTo(() => gameRepository.GetGameAsync(id)).MustHaveHappenedOnceExactly();
            result.Result.ShouldBeOfType <NotFoundObjectResult>();
            ((NotFoundObjectResult)result.Result).Value.ShouldBe($"Could not find game with ID of {id}");
        }
        public async Task DeleteGame_WhenCurrentGameIsFoundAndNotDeleted_ShouldReturnBadRequest()
        {
            // Arrange
            var  gameRepository = A.Fake <IGameRepository>();
            Game?game           = new Game();

            A.CallTo(() => gameRepository.GetGameAsync(A <int> .Ignored)).Returns(game);

            var sharedRepository = A.Fake <ISharedRepository>();

            A.CallTo(() => sharedRepository.SaveChangesAsync()).Returns(0);

            var mapper        = A.Fake <IMapper>();
            var linkGenerator = A.Fake <LinkGenerator>();
            var gameService   = A.Fake <IGameService>();

            var testController =
                new GamesController(gameRepository, sharedRepository, mapper, linkGenerator, gameService);

            int id = 1;

            // Act
            var result = await testController.DeleteGame(id);

            // Assert
            A.CallTo(() => gameRepository.GetGameAsync(id)).MustHaveHappenedOnceExactly();
            A.CallTo(() => gameService.DeleteGameAsync(id)).MustHaveHappenedOnceExactly();
            A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly();
            result.Result.ShouldBeOfType <BadRequestResult>();
        }
Beispiel #3
0
        public async Task RateVideoGame_RatingHigherThenAllowedValueAndGameId_ReturnsNotFoundResult()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseInMemoryDatabase("test");
            var _dbContext = new ApplicationDbContext(optionsBuilder.Options);

            var c = new GamesController(_dbContext, _hostingEnv);

            Games game = new Games();

            game.Id           = 1;
            game.Title        = "test";
            game.Genre        = "rock";
            game.Description  = "loud stuff";
            game.Publisher    = "da";
            game.Developer    = "EA";
            game.ESRB_Ratings = "lalaalaa";
            game.ReleaseDate  = new System.DateTime();
            game.Price        = 2;
            game.GameLink     = "dsa";
            game.Available    = "dsadas";
            game.EntryDate    = new System.DateTime();

            await c.Create(game);


            var sf = new StoreFrontController(_dbContext);

            var result = await sf.RateGame(9, 2);

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public async Task GetGame_WhenGameIsNotNull_ShouldReturnGameModelOfDesiredGame()
        {
            // Arrange
            var  gameRepository = A.Fake <IGameRepository>();
            Game?game           = new Game();

            A.CallTo(() => gameRepository.GetGameAsync(A <int> .Ignored)).Returns(game);

            var sharedRepository = A.Fake <ISharedRepository>();

            var       mapper    = A.Fake <IMapper>();
            GameModel?gameModel = new GameModel();

            A.CallTo(() => mapper.Map <GameModel>(A <Game> .Ignored)).Returns(gameModel);

            var linkGenerator = A.Fake <LinkGenerator>();
            var gameService   = A.Fake <IGameService>();

            var testController =
                new GamesController(gameRepository, sharedRepository, mapper, linkGenerator, gameService);

            int id = 1;

            // Act
            var result = await testController.GetGame(id);

            // Assert
            A.CallTo(() => gameRepository.GetGameAsync(id)).MustHaveHappenedOnceExactly();
            A.CallTo(() => mapper.Map <GameModel>(game)).MustHaveHappenedOnceExactly();
            result.Value.ShouldBeOfType <GameModel>();
        }
Beispiel #5
0
        public async Task PostGame_CorrectGameWithCorrectValuesExceptNegativeDeveloperIdAndIdNotSet_BadRequestResult()
        {
            // Arrange
            InitializeInmemoryDatabase(out DbContextOptions <GameReviewsContext> options, GetFakeList());

            Game gameToCreate = new Game()
            {
                Name             = "NewGame",
                Description      = "NewDescription",
                PublisherId      = 2,
                DeveloperId      = -1,
                AnnouncementDate = DateTime.Parse("10-05-2015"),
                ReleaseDate      = DateTime.Parse("27-12-2018")
            };

            // Act
            using (var context = new GameReviewsContext(options))
            {
                GamesController gamesController = new GamesController(context);
                var             result          = (await gamesController.PostGame(gameToCreate)).Result;

                // Assert
                Assert.IsType <BadRequestResult>(result);
            }
        }
        internal void Start()
        {
            var games = new GamesController();
            var loop  = true;

            while (loop)
            {
                UI.PrintMainMenu();
                var input = Console.ReadKey(true).Key;

                switch (input)
                {
                case ConsoleKey.D1:
                    games.CreateGame();
                    break;

                case ConsoleKey.D2:
                    games.RemoveGame();
                    break;

                case ConsoleKey.D3:
                    games.PrintGameList();
                    break;

                case ConsoleKey.D4:
                    games.EditGame();
                    break;

                case ConsoleKey.D5:
                    loop = false;
                    break;
                }
            }
        }
Beispiel #7
0
        public async Task PutGame_ExistingIdCorrectGameWithPublisherIdChangedToNegative_NoContentResultPublisherIdDoesntChanged()
        {
            // Arrange
            const int gameId = 3, publisherId = -1;

            InitializeInmemoryDatabase(out DbContextOptions <GameReviewsContext> options, GetFakeList());

            Game gameToUpdate = GetFakeList().Where(d => d.ID == gameId).FirstOrDefault(),
            // Should use ICopyable interface here
                 expectedGame = GetFakeList().Where(d => d.ID == gameId).FirstOrDefault();

            // Act
            using (var context = new GameReviewsContext(options))
            {
                gameToUpdate.PublisherId = publisherId;

                GamesController gamesController = new GamesController(context);
                var             result          = (await gamesController.PutGame(gameId, gameToUpdate));

                Game actualGame = await context.Games.Where(d => d.ID == gameId).FirstOrDefaultAsync();

                // Assert
                Assert.IsType <BadRequestResult>(result);
            }
        }
        public void GetAllShouldWorkCorrectly()
        {
            var fakeGamesService      = A.Fake <IGamesService>();
            var fakeGenresService     = A.Fake <IGenresService>();
            var fakeLanguagesService  = A.Fake <ILanguagesService>();
            var fakePublishersService = A.Fake <IPublishersService>();
            var fakeTagsService       = A.Fake <ITagsService>();
            var fakeEnvironment       = A.Fake <IWebHostEnvironment>();
            var fakeWishlistService   = A.Fake <IWishlistService>();
            var fakeOrdersService     = A.Fake <IOrdersService>();
            var fakeCartService       = A.Fake <ICartService>();
            var fakeCache             = A.Fake <IMemoryCache>();

            A.CallTo(() => fakeGamesService.All <GameInListViewModel>(1, 16))
            .Returns(A.CollectionOfFake <GameInListViewModel>(20));

            var gamesController = new GamesController(
                fakeGamesService,
                fakeGenresService,
                fakeLanguagesService,
                fakeTagsService,
                fakePublishersService,
                fakeEnvironment,
                fakeWishlistService,
                fakeOrdersService,
                fakeCartService,
                fakeCache);

            var result = gamesController.All();

            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <GamesListViewModel>(viewResult.Model);

            Assert.Equal(20, model.Games.Count());
        }
Beispiel #9
0
        public void GetAllGames_GetAllIsCalledAndAndJsonResultIsCorrect()
        {
            // Arrange
            var expectedGames = new List <GameDataModel>
            {
                new GameDataModel {
                    Id = 1, Name = "BBB", Key = "k1"
                },
                new GameDataModel {
                    Id = 2, Name = "ZZZ", Key = "k2"
                },
                new GameDataModel {
                    Id = 3, Name = "AAA", Key = "k3"
                },
            };

            var mock = new Mock <IGameRepository>();

            mock.Setup(m => m.GetAll()).Returns(expectedGames);
            var controller = new GamesController(mock.Object);

            // Act
            var result = controller.GetAllGames() as JsonResult;

            // Assert
            Assert.IsNotNull(result);
            mock.Verify(a => a.GetAll(), Times.Once);
            Assert.AreEqual(expectedGames, result.Data);
        }
Beispiel #10
0
        public async Task PutGame_ExistingIdCorrectGameWithDeveloperIdChangedToExisting_NoContentResultDeveloperIdChanged()
        {
            // Arrange
            const int gameId = 3, developerId = 7;

            InitializeInmemoryDatabase(out DbContextOptions <GameReviewsContext> options, GetFakeList());

            Game gameToUpdate = GetFakeList().Where(d => d.ID == gameId).FirstOrDefault(),
            // Should use ICopyable interface here
                 expectedGame = GetFakeList().Where(d => d.ID == gameId).FirstOrDefault();

            // Act
            using (var context = new GameReviewsContext(options))
            {
                gameToUpdate.DeveloperId = developerId;
                expectedGame.DeveloperId = developerId;

                GamesController gamesController = new GamesController(context);
                var             result          = (await gamesController.PutGame(gameId, gameToUpdate));

                Game actualGame = await context.Games.Where(d => d.ID == gameId).FirstOrDefaultAsync();

                // Assert
                Assert.True(AreEqual(expectedGame, actualGame));
                Assert.IsType <NoContentResult>(result);
            }
        }
Beispiel #11
0
        public void Remove_RemoveForRepositoryIsCalledAndRedirectWorks()
        {
            //ToDo it doesn't works! bacause of Helpers in controller
            // Arrange
            var mock = new Mock <IGameRepository>();

            ////var request = new Mock<HttpRequestBase>();
            ////var context = new Mock<HttpContextBase>();
            ////context.SetupGet(x => x.Request).Returns(request.Object); //Set up request base for the httpcontext

            //context
            int gameId         = 1;
            var expectedResult = new JsonResult();//Url.Action("Index", "Games"
            var controller     = new GamesController(mock.Object);

            ////controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);

            // Act
            var result = controller.Remove(gameId) as JsonResult;

            // Assert
            Assert.IsNotNull(result);
            mock.Verify(a => a.Remove(gameId), Times.Once);
            //Assert.AreEqual(expectedResult, result.Data);
        }
Beispiel #12
0
        //[Test]
        public void GetGameFromGameController()
        {
            GamesController controller = new GamesController();
            var             result     = controller.Details(1) as ViewResult;

            Assert.AreEqual("Details", result.ViewName);
        }
Beispiel #13
0
        public void GamesControllerReturnsCorrectView()
        {
            var answerSheet = new AnswerSheet {
                Id = 1, UserId = "1", UserName = "******"
            };

            var data = new List <AnswerSheet> {
                answerSheet
            }.AsQueryable();

            var mockSet = new Mock <DbSet <AnswerSheet> >();

            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <Brainzzler_DBContext>();

            mockContext.Setup(set => set.AnswerSheet).Returns(mockSet.Object);

            var mockIdenityProvider = new Mock <IUserIdenityProvider>();

            mockIdenityProvider.Setup(s => s.GetCurrentUserId()).Returns("2");

            //Act
            var service = new GamesController(mockContext.Object, mockIdenityProvider.Object);

            var gamesResult = service.Index() as ViewResult;

            Assert.AreEqual("Index", gamesResult.ViewName);
        }
Beispiel #14
0
        public void GamesControllerReturns0pointsWhenNull()
        {
            var answerSheet = new AnswerSheet {
                Id = 1, UserId = "1", UserName = "******"
            };

            var data = new List <AnswerSheet> {
                answerSheet
            }.AsQueryable();

            var mockSet = new Mock <DbSet <AnswerSheet> >();

            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <AnswerSheet> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <Brainzzler_DBContext>();

            mockContext.Setup(set => set.AnswerSheet).Returns(mockSet.Object);

            var mockIdenityProvider = new Mock <IUserIdenityProvider>();

            mockIdenityProvider.Setup(s => s.GetCurrentUserId()).Returns("2");

            //Act
            var service = new GamesController(mockContext.Object, mockIdenityProvider.Object);
            var points  = service.Points();

            //Assert
            Assert.AreEqual(0, points);
        }
Beispiel #15
0
        public async Task PostGame_CorrectGameWithCorrectValuesAndZeroIdSetted_CreatedAtActionResultWithGeneratedId()
        {
            // Arrange
            const int idToSet = 0;

            InitializeInmemoryDatabase(out DbContextOptions <GameReviewsContext> options, GetFakeList());

            Game gameToCreate = new Game()
            {
                Name             = "NewGame",
                Description      = "NewDescription",
                PublisherId      = 1,
                DeveloperId      = 2,
                AnnouncementDate = DateTime.Parse("10-05-2015"),
                ReleaseDate      = DateTime.Parse("27-12-2018"),
                ID = idToSet
            };

            // Act
            using (var context = new GameReviewsContext(options))
            {
                GamesController gamesController = new GamesController(context);
                var             result          = (await gamesController.PostGame(gameToCreate)).Result;

                // Assert
                Assert.True(gameToCreate.ID != idToSet);
                Assert.IsType <CreatedAtActionResult>(result);
            }
        }
        public async Task GetGame_WhenExceptionIsCaught_ShouldReturnInternalServerError()
        {
            // Arrange
            var  gameRepository = A.Fake <IGameRepository>();
            Game?game           = new Game();

            A.CallTo(() => gameRepository.GetGameAsync(A <int> .Ignored)).Throws <Exception>();

            var sharedRepository = A.Fake <ISharedRepository>();

            var       mapper    = A.Fake <IMapper>();
            GameModel?gameModel = new GameModel();

            A.CallTo(() => mapper.Map <GameModel>(A <Game> .Ignored)).Returns(gameModel);

            var linkGenerator = A.Fake <LinkGenerator>();
            var gameService   = A.Fake <IGameService>();

            var testController =
                new GamesController(gameRepository, sharedRepository, mapper, linkGenerator, gameService);

            int id = 1;

            // Act
            var result = await testController.GetGame(id);

            // Assert
            result.Result.ShouldBeOfType <ObjectResult>();
            ((ObjectResult)result.Result).StatusCode.ShouldBe(StatusCodes.Status500InternalServerError);
            ((ObjectResult)result.Result).Value.ShouldBe("Database failure");
        }
        public async Task GetGames_WhenNoExceptionIsCaught_ShouldGetGames()
        {
            // Arrange
            var gameRepository = A.Fake <IGameRepository>();
            var games          = new List <Game>();

            A.CallTo(() => gameRepository.GetGamesAsync()).Returns(games);

            var sharedRepository = A.Fake <ISharedRepository>();
            var mapper           = A.Fake <IMapper>();
            var linkGenerator    = A.Fake <LinkGenerator>();
            var gameService      = A.Fake <IGameService>();

            var testController =
                new GamesController(gameRepository, sharedRepository, mapper, linkGenerator, gameService);

            // Act
            var result = await testController.GetGames();

            // Assert
            A.CallTo(() => gameRepository.GetGamesAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => mapper.Map <GameModel[]>(games)).MustHaveHappenedOnceExactly();
            result.ShouldBeOfType <ActionResult <GameModel[]> >();
            result.Value.ShouldBe(mapper.Map <GameModel[]>(games));
        }
Beispiel #18
0
        public async Task Setup()
        {
            context = await TestDatabase.GetDatabaseContext();

            mockGamesService = new MockGamesService(context);
            mockAppsService  = new MockAppsService(context);

            baseRequest = new BaseRequest();

            createGameRequest = new CreateGameRequest();

            getMyGameRequest = new GamesRequest()
            {
                UserId      = 1,
                License     = TestObjects.GetLicense(),
                RequestorId = 1,
                Paginator   = new Paginator()
            };

            updateGameRequest = TestObjects.GetUpdateGameRequest();

            sutSuccess = new GamesController(
                mockGamesService.GamesServiceSuccessfulRequest.Object,
                mockAppsService.AppsServiceSuccessfulRequest.Object);

            sutFailure = new GamesController(
                mockGamesService.GamesServiceFailedRequest.Object,
                mockAppsService.AppsServiceSuccessfulRequest.Object);
        }
        public async Task Details_WhenIdIsNotNullAndGameFound_ShouldReturnNotFound()
        {
            // Arrange
            var gamesIndexViewModel   = A.Fake <IGamesIndexViewModel>();
            var gamesDetailsViewModel = A.Fake <IGamesDetailsViewModel>();
            var gameService           = A.Fake <IGameService>();

            var  gameRepository = A.Fake <IGameRepository>();
            Game?game           = new Game();

            A.CallTo(() => gameRepository.GetGameAsync(A <int> .Ignored)).Returns(game);

            var teamRepository   = A.Fake <ITeamRepository>();
            var seasonRepository = A.Fake <ISeasonRepository>();
            var sharedRepository = A.Fake <ISharedRepository>();
            var testController   = new GamesController(gamesIndexViewModel, gamesDetailsViewModel, gameService,
                                                       gameRepository, teamRepository, seasonRepository, sharedRepository);

            int?id = 1;

            // Act
            var result = await testController.Details(id.Value);

            // Assert
            A.CallTo(() => gameRepository.GetGameAsync(id.Value)).MustHaveHappenedOnceExactly();
            gamesDetailsViewModel.Game.ShouldBe(game);
            result.ShouldBeOfType <ViewResult>();
            ((ViewResult)result).Model.ShouldBe(gamesDetailsViewModel);
        }
        private void TestGameLeave(GameModel game)
        {
            // remove everyone from game, player[0] is the host

            GamesController controller = new GamesController();
            // Add Authorization
            var context = new HttpControllerContext();
            var request = new HttpRequestMessage();

            controller.ControllerContext = context;
            controller.Request           = request;

            var players = TestHelpers.TestData.getAuthorizedPlayers();

            // verify other players can leave game, but cannot leave a second time
            for (int i = players.Count - 1; i >= 0; i--)
            {
                var testPlayer = players[i];
                request.Headers.Remove("Authorization");
                request.Headers.Add("Authorization", testPlayer.AuthCode);

                // can leave
                var result = controller.LeaveGame(game.Id);
                Assert.IsInstanceOfType(result, typeof(OkResult));

                // cannot leave again
                result = controller.LeaveGame(game.Id);
                Assert.IsInstanceOfType(result, typeof(NotFoundResult));
            }

            // verify game no longer exists
            var getResult = controller.GetGame(game.Id);

            Assert.IsInstanceOfType(getResult, typeof(NotFoundResult));
        }
Beispiel #21
0
        public void GetAll_WhenScoresInDb_ShouldReturnScores()
        {
            var repo = Mock.Create <IRepository <Game> >();

            Mock.Arrange(() => repo.All())
            .Returns(() => new List <Game>().AsQueryable());

            var data = Mock.Create <IBullsAndCowsData>();

            Mock.Arrange(() => data.Games)
            .Returns(() => repo);

            var controller = new GamesController(data, null, null, null);

            this.SetupController(controller);

            var actionResult = controller.Get();

            var response = actionResult.ExecuteAsync(CancellationToken.None).Result;

            var actual = response.Content.ReadAsStringAsync().Result;

            var expected = "[]"; //empty array

            Assert.AreEqual(actual, expected);
        }
Beispiel #22
0
        public void Delete_IdIsNull_ReturnsNotFoundResult()
        {
            var controller = new GamesController(new FakeGamesRepository(), new FakeLogger());

            var result = controller.Delete(null);

            Assert.IsType <NotFoundResult>(result);
        }
Beispiel #23
0
        public void GetById_IdDoesNotExists_ReturnsNotFoundResult()
        {
            var controller = new GamesController(new FakeGamesRepository(), new FakeLogger());

            var result = controller.GetById("some-id");

            Assert.IsType <NotFoundResult>(result.Result);
        }
Beispiel #24
0
        public void Delete_IdExists_ReturnsOkResult()
        {
            var controller = new GamesController(new FakeGamesRepository(), new FakeLogger());

            var result = controller.Delete("existing");

            Assert.IsType <OkResult>(result);
        }
Beispiel #25
0
        public void GamesControllerDeleteConfirmed()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.DeleteConfirmed(1);

            Assert.IsNotNull(result);
        }
Beispiel #26
0
        public void GamesControllerEdit()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.Edit(null);

            Assert.IsNotNull(result);
        }
Beispiel #27
0
        public void GamesControllerDetails()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.Details(null);

            Assert.IsNotNull(result);
        }
Beispiel #28
0
        public void GamesControllerCreate()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.Create();

            Assert.IsNotNull(result);
        }
Beispiel #29
0
        public void GamesControllerIndex()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.Index("aaa");

            Assert.IsNotNull(result);
        }
Beispiel #30
0
        public void GamesControllerReturnNull()
        {
            var gamesController = new GamesController(null);

            var result = gamesController.HttpContext;

            Assert.IsNull(result);
        }
 public GamesControllerTests()
 {
     this.fakeGames = this.GenerateFakeCollectionOfGames();
     this.gamesRepo = new MockIGenericRepository<Game>(this.fakeGames);
     this.gamesController = new GamesController(this.gamesRepo.MockedRepo.Object);
 }