public void SetsCommandPrincipalProperty()
            {
                const string principalIdentityName = "*****@*****.**";
                var          scenarioOptions       = new ScenarioOptions
                {
                    PrincipalIdentityName = principalIdentityName,
                };
                var model = new UpdateNameForm
                {
                    DisplayName          = "test",
                    IsDisplayNameDerived = false,
                    FirstName            = "first",
                    LastName             = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression <Func <UpdateMyNameCommand, bool> > commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;
                UpdateMyNameCommand executedCommand = null;

                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)))
                .Callback((UpdateMyNameCommand command) => executedCommand = command);

                controller.Put(model);

                executedCommand.Principal.Identity.Name.ShouldEqual(scenarioOptions.PrincipalIdentityName);
                executedCommand.Principal.Identity.Name.ShouldEqual(principalIdentityName);
            }
            public void ExecutesCommand_WhenAction_IsValid()
            {
                var scenarioOptions = new ScenarioOptions();
                var model           = new UpdateNameForm
                {
                    DisplayName          = "test",
                    IsDisplayNameDerived = false,
                    FirstName            = "first",
                    LastName             = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression <Func <UpdateMyNameCommand, bool> > commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;

                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                controller.Put(model);

                scenarioOptions.MockCommandHandler.Verify(m =>
                                                          m.Handle(It.Is(commandDerivedFromModel)),
                                                          Times.Once());
            }
            public void FlashesNoChangesMessage_WhenCommand_ChangedState()
            {
                var scenarioOptions = new ScenarioOptions();
                var model           = new UpdateNameForm
                {
                    DisplayName          = "test",
                    IsDisplayNameDerived = false,
                    FirstName            = "first",
                    LastName             = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression <Func <UpdateMyNameCommand, bool> > commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;

                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                controller.Put(model);

                controller.TempData.ShouldNotBeNull();
                var message = controller.TempData.FeedbackMessage();

                message.ShouldNotBeNull();
                message.ShouldEqual(UpdateNameController.NoChangesMessage);
            }
        public virtual ActionResult Put(UpdateNameForm model)
        {
            // make sure model is not null
            if (model == null)
            {
                return(HttpNotFound());
            }

            // make sure model state is valid
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // execute command, set feedback message, and redirect
            var command = Mapper.Map <UpdateMyNameCommand>(model);

            command.Principal = User;
            _services.CommandHandler.Handle(command);
            SetFeedbackMessage(command.ChangedState
                ? SuccessMessage
                : NoChangesMessage
                               );
            return(Redirect(UpdateNameForm.ReturnUrl));
        }
            public void ReturnsRedirect_ToStaticReturnUrl_AfterCommandIsExecuted()
            {
                var scenarioOptions = new ScenarioOptions();
                var model           = new UpdateNameForm
                {
                    DisplayName          = "test",
                    IsDisplayNameDerived = false,
                    FirstName            = "first",
                    LastName             = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression <Func <UpdateMyNameCommand, bool> > commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;

                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                var result = controller.Put(model);

                result.ShouldNotBeNull();
                result.ShouldBeType <RedirectResult>();
                var redirectResult = (RedirectResult)result;

                redirectResult.Url.ShouldEqual(UpdateNameForm.ReturnUrl);
                redirectResult.Permanent.ShouldBeFalse();
            }
 public void IsValidWhen_DisplayName_IsNotEmpty()
 {
     var validator = new UpdateNameValidator();
     var model = new UpdateNameForm { DisplayName = "test" };
     var results = validator.Validate(model);
     var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
     error.ShouldBeNull();
 }
 public void IsInvalidWhen_DisplayName_IsWhiteSpace()
 {
     var validator = new UpdateNameValidator();
     var model = new UpdateNameForm { DisplayName = " \r" };
     var results = validator.Validate(model);
     results.IsValid.ShouldBeFalse();
     results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
     var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
     error.ShouldNotBeNull();
     // ReSharper disable PossibleNullReferenceException
     error.ErrorMessage.ShouldEqual(
         UpdateNameValidator.FailedBecauseDisplayNameWasEmpty);
     // ReSharper restore PossibleNullReferenceException
 }
            public void ReturnsView_WhenModelState_IsInvalid()
            {
                var scenarioOptions = new ScenarioOptions();
                var model           = new UpdateNameForm();
                var controller      = CreateController(scenarioOptions);

                controller.ModelState.AddModelError("error", "message");

                var result = controller.Put(model);

                result.ShouldNotBeNull();
                result.ShouldBeType <ViewResult>();
                var viewResult = (ViewResult)result;

                viewResult.Model.ShouldNotBeNull();
                viewResult.Model.ShouldBeType <UpdateNameForm>();
                viewResult.Model.ShouldEqual(model);
            }
        //[OpenTopTab(TopTabName.Home)]
        //[ActionName("update-name")]
        public virtual ActionResult Put(UpdateNameForm model)
        {
            // make sure model is not null
            if (model == null) return HttpNotFound();

            // make sure model state is valid
            if (!ModelState.IsValid) return View(MVC.IdentityDeprecated.Shared.Views.update_name, model);

            // execute command, set feedback message, and redirect
            var command = Mapper.Map<UpdateMyName>(model);
            command.Principal = User;
            _services.CommandHandler.Handle(command);
            //SetFeedbackMessage(command.ChangedState
            //    ? SuccessMessage
            //    : NoChangesMessage
            //);
            return Redirect(UpdateNameForm.ReturnUrl);
        }
            public void MapsIsDisplayNameDerived()
            {
                var model = new UpdateNameForm { IsDisplayNameDerived = true };

                var command = Mapper.Map<UpdateMyNameCommand>(model);

                command.ShouldNotBeNull();
                command.IsDisplayNameDerived.ShouldBeTrue();
            }
            public void ReturnsView_WhenModelState_IsInvalid()
            {
                var scenarioOptions = new ScenarioOptions();
                var model = new UpdateNameForm();
                var controller = CreateController(scenarioOptions);
                controller.ModelState.AddModelError("error", "message");

                var result = controller.Put(model);

                result.ShouldNotBeNull();
                result.ShouldBeType<ViewResult>();
                var viewResult = (ViewResult)result;
                viewResult.Model.ShouldNotBeNull();
                viewResult.Model.ShouldBeType<UpdateNameForm>();
                viewResult.Model.ShouldEqual(model);
            }
            public void SetsCommandPrincipalProperty()
            {
                const string principalIdentityName = "*****@*****.**";
                var scenarioOptions = new ScenarioOptions
                {
                    PrincipalIdentityName = principalIdentityName,
                };
                var model = new UpdateNameForm
                {
                    DisplayName = "test",
                    IsDisplayNameDerived = false,
                    FirstName = "first",
                    LastName = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression<Func<UpdateMyNameCommand, bool>> commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;
                UpdateMyNameCommand executedCommand = null;
                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)))
                    .Callback((UpdateMyNameCommand command) => executedCommand = command);

                controller.Put(model);

                executedCommand.Principal.Identity.Name.ShouldEqual(scenarioOptions.PrincipalIdentityName);
                executedCommand.Principal.Identity.Name.ShouldEqual(principalIdentityName);
            }
            public void IgnoresPrincipal()
            {
                var model = new UpdateNameForm();

                var command = Mapper.Map<UpdateMyNameCommand>(model);

                command.ShouldNotBeNull();
                command.Principal.ShouldBeNull();
            }
            public void IgnoresChangeCount()
            {
                var model = new UpdateNameForm();

                var command = Mapper.Map<UpdateMyNameCommand>(model);

                command.ShouldNotBeNull();
                command.ChangeCount.ShouldEqual(0);
            }
            public void MapsSuffix()
            {
                const string value = "test";
                var model = new UpdateNameForm { Suffix = value };

                var command = Mapper.Map<UpdateMyNameCommand>(model);

                command.ShouldNotBeNull();
                command.Suffix.ShouldNotBeNull();
                command.Suffix.ShouldEqual(model.Suffix);
            }
            public void MapsLastName()
            {
                const string value = "test";
                var model = new UpdateNameForm { LastName = value };

                var command = Mapper.Map<UpdateMyNameCommand>(model);

                command.ShouldNotBeNull();
                command.LastName.ShouldNotBeNull();
                command.LastName.ShouldEqual(model.LastName);
            }
            public void ExecutesCommand_WhenAction_IsValid()
            {
                var scenarioOptions = new ScenarioOptions();
                var model = new UpdateNameForm
                {
                    DisplayName = "test",
                    IsDisplayNameDerived = false,
                    FirstName = "first",
                    LastName = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression<Func<UpdateMyNameCommand, bool>> commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;
                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                controller.Put(model);

                scenarioOptions.MockCommandHandler.Verify(m =>
                    m.Handle(It.Is(commandDerivedFromModel)),
                        Times.Once());
            }
            public void ReturnsRedirect_ToStaticReturnUrl_AfterCommandIsExecuted()
            {
                var scenarioOptions = new ScenarioOptions();
                var model = new UpdateNameForm
                {
                    DisplayName = "test",
                    IsDisplayNameDerived = false,
                    FirstName = "first",
                    LastName = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression<Func<UpdateMyNameCommand, bool>> commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;
                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                var result = controller.Put(model);

                result.ShouldNotBeNull();
                result.ShouldBeType<RedirectResult>();
                var redirectResult = (RedirectResult)result;
                redirectResult.Url.ShouldEqual(UpdateNameForm.ReturnUrl);
                redirectResult.Permanent.ShouldBeFalse();
            }
            public void FlashesNoChangesMessage_WhenCommand_ChangedState()
            {
                var scenarioOptions = new ScenarioOptions();
                var model = new UpdateNameForm
                {
                    DisplayName = "test",
                    IsDisplayNameDerived = false,
                    FirstName = "first",
                    LastName = "last",
                };
                var controller = CreateController(scenarioOptions);
                Expression<Func<UpdateMyNameCommand, bool>> commandDerivedFromModel =
                    command =>
                    command.DisplayName == model.DisplayName &&
                    command.IsDisplayNameDerived == model.IsDisplayNameDerived &&
                    command.Salutation == model.Salutation &&
                    command.FirstName == model.FirstName &&
                    command.MiddleName == model.MiddleName &&
                    command.LastName == model.LastName &&
                    command.Suffix == model.Suffix
                ;
                scenarioOptions.MockCommandHandler.Setup(m => m.Handle(It.Is(commandDerivedFromModel)));

                controller.Put(model);

                controller.TempData.ShouldNotBeNull();
                var message = controller.TempData.FeedbackMessage();
                message.ShouldNotBeNull();
                message.ShouldEqual(UpdateNameController.NoChangesMessage);
            }