public virtual ActionResult AjaxCreate(CreateGameDefinitionViewModel createGameDefinitionViewModel, ApplicationUser currentUser)
        {
            if (!Request.IsAjaxRequest())
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (ModelState.IsValid)
            {
                createGameDefinitionViewModel.Name = createGameDefinitionViewModel.Name.Trim();
                var createGameDefinitionRequest = Mapper.Map <CreateGameDefinitionRequest>(createGameDefinitionViewModel);

                try
                {
                    _createGameDefinitionComponent.Execute(createGameDefinitionRequest, currentUser);
                }
                catch (DuplicateKeyException)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "This Game Definition is already active within your Gaming Group."));
                }
                return(Json(currentUser.CurrentGamingGroupId, JsonRequestBehavior.AllowGet));
            }

            var errorDescription = string.Empty;

            errorDescription = GetFirstModelStateError(errorDescription);
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, errorDescription));
        }
Example #2
0
        public void ItReloadsTheCurrentGameDefinitionIfValidationFails()
        {
            var createGameDefinitionRequest = new CreateGameDefinitionViewModel();

            autoMocker.ClassUnderTest.ModelState.AddModelError("key", "message");

            ViewResult actionResult    = autoMocker.ClassUnderTest.Create(createGameDefinitionRequest, currentUser) as ViewResult;
            var        actualViewModel = (CreateGameDefinitionViewModel)actionResult.ViewData.Model;

            Assert.AreSame(createGameDefinitionRequest, actualViewModel);
        }
Example #3
0
        public void ItReloadsTheCurrentGameDefinitionIfValidationFails()
        {
            var createGameDefinitionRequest = new CreateGameDefinitionViewModel();

            gameDefinitionControllerPartialMock.ModelState.AddModelError("key", "message");

            ViewResult actionResult    = gameDefinitionControllerPartialMock.Create(createGameDefinitionRequest, currentUser) as ViewResult;
            var        actualViewModel = (CreateGameDefinitionViewModel)actionResult.ViewData.Model;

            Assert.AreSame(createGameDefinitionRequest, actualViewModel);
        }
        public void ItReturnsABadRequestWithTheTheFirstModelStateErrorValidationMessageIfValidationFails()
        {
            var          model   = new CreateGameDefinitionViewModel();
            const string MESSAGE = "some message";

            autoMocker.ClassUnderTest.ModelState.AddModelError("key", MESSAGE);

            var result = autoMocker.ClassUnderTest.AjaxCreate(model, currentUser) as HttpStatusCodeResult;

            Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode);
            Assert.AreEqual(result.StatusDescription, MESSAGE);
        }
Example #5
0
        public void ItSavesTheGameDefinitionIfValidationPasses()
        {
            var createGameDefinitionRequest = new CreateGameDefinitionViewModel()
            {
                Name = "game definition name"
            };

            autoMocker.ClassUnderTest.Create(createGameDefinitionRequest, currentUser);

            autoMocker.Get <IGameDefinitionSaver>().AssertWasCalled(mock => mock.CreateGameDefinition(
                                                                        Arg <CreateGameDefinitionRequest> .Matches(x => x.Name == createGameDefinitionRequest.Name &&
                                                                                                                   x.Description == createGameDefinitionRequest.Description &&
                                                                                                                   x.BoardGameGeekGameDefinitionId == createGameDefinitionRequest.BoardGameGeekGameDefinitionId),
                                                                        Arg <ApplicationUser> .Is.Same(currentUser)));
        }
Example #6
0
        public void ItSavesTheGameDefinitionIfValidationPasses()
        {
            var createGameDefinitionRequest = new CreateGameDefinitionViewModel()
            {
                Name = "game definition name"
            };

            gameDefinitionControllerPartialMock.Create(createGameDefinitionRequest, currentUser);

            gameDefinitionCreatorMock.AssertWasCalled(mock => mock.CreateGameDefinition(
                                                          Arg <CreateGameDefinitionRequest> .Matches(x => x.Name == createGameDefinitionRequest.Name &&
                                                                                                     x.Description == createGameDefinitionRequest.Description &&
                                                                                                     x.BoardGameGeekGameDefinitionId == createGameDefinitionRequest.BoardGameGeekGameDefinitionId),
                                                          Arg <ApplicationUser> .Is.Same(currentUser)));
        }
Example #7
0
        public void ItRedirectsToTheGamingGroupIndexAndGameDefinitionSectionAfterSaving()
        {
            string baseUrl     = "base url";
            string expectedUrl = baseUrl + "#" + GamingGroupController.SECTION_ANCHOR_GAMEDEFINITIONS;
            var    createGameDefinitionRequest = new CreateGameDefinitionViewModel()
            {
                Name = "game definition name"
            };

            autoMocker.ClassUnderTest.Url.Expect(mock => mock.Action(MVC.GamingGroup.ActionNames.Index, MVC.GamingGroup.Name))
            .Return(baseUrl);

            RedirectResult redirectResult = autoMocker.ClassUnderTest.Create(createGameDefinitionRequest, currentUser) as RedirectResult;

            Assert.AreEqual(expectedUrl, redirectResult.Url);
        }
        public void ItReturnsAFriendlyMessageIfThereIsADuplicateKeyException()
        {
            var model = new CreateGameDefinitionViewModel
            {
                Name = "some name"
            };

            autoMocker.Get <IGameDefinitionSaver>().Expect(mock => mock.CreateGameDefinition(null, null))
            .IgnoreArguments()
            .Throw(new DuplicateKeyException("some duplicate key"));

            var result = autoMocker.ClassUnderTest.AjaxCreate(model, currentUser) as HttpStatusCodeResult;

            Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode);
            Assert.AreEqual("This Game Definition is already active within your Gaming Group.", result.StatusDescription);
        }
        public virtual ActionResult Create(CreateGameDefinitionViewModel createGameDefinitionViewModel, ApplicationUser currentUser)
        {
            if (ModelState.IsValid)
            {
                createGameDefinitionViewModel.Name = createGameDefinitionViewModel.Name.Trim();
                var createGameDefinitionRequest = Mapper.Map <CreateGameDefinitionViewModel, CreateGameDefinitionRequest>(createGameDefinitionViewModel);

                var savedResult = _createGameDefinitionComponent.Execute(createGameDefinitionRequest, currentUser);

                if (!string.IsNullOrWhiteSpace(createGameDefinitionViewModel.ReturnUrl))
                {
                    return(new RedirectResult(createGameDefinitionViewModel.ReturnUrl + "?gameId=" + savedResult.Id));
                }

                return(new RedirectResult(Url.Action(MVC.GamingGroup.ActionNames.Index, MVC.GamingGroup.Name)
                                          + "#" + GamingGroupController.SECTION_ANCHOR_GAMEDEFINITIONS));
            }

            return(View(MVC.GameDefinition.Views.Create, createGameDefinitionViewModel));
        }
Example #10
0
        public void ItRedirectsBackToThePlayedGameCreateWhenSentFromThere()
        {
            int    expectedGameDefinitionId = 123;
            string returnUrl = "/PlayedGame/Create";
            var    createGameDefinitionRequest = new CreateGameDefinitionViewModel()
            {
                ReturnUrl = returnUrl,
                Name      = "Project-Ariel"
            };

            autoMocker.Get <IGameDefinitionSaver>().Expect(mock => mock.CreateGameDefinition(Arg <CreateGameDefinitionRequest> .Is.Anything, Arg <ApplicationUser> .Is.Anything))
            .Return(new GameDefinition
            {
                Id = expectedGameDefinitionId
            });
            string expectedUrl = returnUrl + "?gameId=" + expectedGameDefinitionId;

            RedirectResult redirectResult = autoMocker.ClassUnderTest.Create(createGameDefinitionRequest, currentUser) as RedirectResult;

            Assert.AreEqual(expectedUrl, redirectResult.Url);
        }
        public void ItCreatesTheNewGame()
        {
            var createGameDefinitionViewModel = new CreateGameDefinitionViewModel()
            {
                Active = false,
                BoardGameGeekGameDefinitionId = 1,
                Description = "some description",
                Name        = "New Game"
            };

            autoMocker.ClassUnderTest.AjaxCreate(createGameDefinitionViewModel, currentUser);

            var arguments = autoMocker.Get <IGameDefinitionSaver>().GetArgumentsForCallsMadeOn(mock => mock.CreateGameDefinition(
                                                                                                   Arg <CreateGameDefinitionRequest> .Is.Anything,
                                                                                                   Arg <ApplicationUser> .Is.Anything));
            var createGameDefinitionRequest = arguments[0][0] as CreateGameDefinitionRequest;

            Assert.That(createGameDefinitionRequest, Is.Not.Null);
            Assert.That(createGameDefinitionRequest.Active, Is.EqualTo(createGameDefinitionViewModel.Active));
            Assert.That(createGameDefinitionRequest.BoardGameGeekGameDefinitionId, Is.EqualTo(createGameDefinitionViewModel.BoardGameGeekGameDefinitionId));
            Assert.That(createGameDefinitionRequest.Description, Is.EqualTo(createGameDefinitionViewModel.Description));
            Assert.That(createGameDefinitionRequest.Name, Is.EqualTo(createGameDefinitionViewModel.Name));
        }