示例#1
0
            public void UpdatesAffiliation_WhenFieldsHaveChanged()
            {
                const string principalIdentityName = "*****@*****.**";
                var          principal             = principalIdentityName.AsPrincipal();
                var          command = new UpdateMyAffiliationCommand
                {
                    Principal       = principal,
                    EstablishmentId = 4,
                };
                var affiliation = new Affiliation
                {
                    EstablishmentId = command.EstablishmentId,
                    Person          = new Person {
                        User = new User {
                            Name = principal.Identity.Name
                        }
                    },
                };
                var entities = new Mock <ICommandEntities>(MockBehavior.Strict).Initialize();

                entities.Setup(m => m.Get <Affiliation>()).Returns(new[] { affiliation }.AsQueryable);
                entities.Setup(m => m.Update(It.Is(AffiliationBasedOn(command))));
                var handler = new UpdateMyAffiliationHandler(entities.Object);

                handler.Handle(command);

                entities.Verify(m => m.Update(It.Is(AffiliationBasedOn(command))), Times.Once());
            }
示例#2
0
            public void IncrementsChangeCount_WhenIsClaimingStaff_IsDifferent()
            {
                Affiliation  outAffiliation        = null;
                const string principalIdentityName = "*****@*****.**";
                var          principal             = principalIdentityName.AsPrincipal();
                var          command = new UpdateMyAffiliationCommand
                {
                    Principal       = principal,
                    EstablishmentId = 4,
                    IsClaimingStaff = true,
                };
                var affiliation = new Affiliation
                {
                    IsClaimingStaff = false,
                    IsAcknowledged  = true,
                    EstablishmentId = command.EstablishmentId,
                    Person          = new Person {
                        User = new User {
                            Name = principal.Identity.Name
                        }
                    },
                };
                var affiliationBasedOnCommand = AffiliationBasedOn(command);
                var entities = new Mock <ICommandEntities>(MockBehavior.Strict).Initialize();

                entities.Setup(m => m.Get <Affiliation>()).Returns(new[] { affiliation }.AsQueryable);
                entities.Setup(m => m.Update(It.Is(affiliationBasedOnCommand)))
                .Callback((Entity entity) => outAffiliation = (Affiliation)entity);
                var handler = new UpdateMyAffiliationHandler(entities.Object);

                handler.Handle(command);

                command.ChangeCount.ShouldEqual(1);
                outAffiliation.IsClaimingStaff.ShouldEqual(command.IsClaimingStaff);
            }
示例#3
0
            public void ExecutesQuery_ToGetAffiliation_FromPrincipalAndEstablishmentId()
            {
                const string principalIdentityName = "*****@*****.**";
                var          principal             = principalIdentityName.AsPrincipal();
                var          command = new UpdateMyAffiliationCommand
                {
                    Principal = principal,
                };
                var affiliation = new Affiliation
                {
                    EstablishmentId = command.EstablishmentId,
                    Person          = new Person {
                        User = new User {
                            Name = principal.Identity.Name
                        }
                    },
                };
                var entities = new Mock <ICommandEntities>(MockBehavior.Strict).Initialize();

                entities.Setup(m => m.Get <Affiliation>()).Returns(new[] { affiliation }.AsQueryable);
                var handler = new UpdateMyAffiliationHandler(entities.Object);
                NullReferenceException exception = null;

                try
                {
                    handler.Handle(command);
                }
                catch (NullReferenceException ex)
                {
                    exception = ex;
                }

                entities.Verify(m => m.Get <Affiliation>(), Times.Once());
                exception.ShouldNotBeNull();
            }
示例#4
0
            public void IsInvalidWhen_PrincipalIdentityName_IsNull()
            {
                const string principalIdentityName = null;
                // ReSharper disable ExpressionIsAlwaysNull
                var principal = principalIdentityName.AsPrincipal();
                // ReSharper restore ExpressionIsAlwaysNull
                var command = new UpdateMyAffiliationCommand
                {
                    Principal = principal,
                };
                var entities = new Mock <IQueryEntities>(MockBehavior.Strict).Initialize();

                entities.Setup(m => m.Query <Establishment>()).Returns(new Establishment[] { }.AsQueryable);
                var validator = new UpdateMyAffiliationValidator(entities.Object);
                var results   = validator.Validate(command);

                results.IsValid.ShouldBeFalse();
                results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
                var error = results.Errors.SingleOrDefault(e => e.PropertyName == "Principal");

                error.ShouldNotBeNull();
                // ReSharper disable PossibleNullReferenceException
                error.ErrorMessage.ShouldEqual(ValidatePrincipal.FailedBecausePrincipalWasNull);
                // ReSharper restore PossibleNullReferenceException
            }
示例#5
0
            public void IsFalse_WhenChangeCount_IsZero()
            {
                var command = new UpdateMyAffiliationCommand
                {
                    ChangeCount = 0,
                };

                command.ChangedState.ShouldBeFalse();
            }
示例#6
0
            public void IsTrue_WhenChangeCount_IsGreaterThanZero()
            {
                var command = new UpdateMyAffiliationCommand
                {
                    ChangeCount = 1,
                };

                command.ChangedState.ShouldBeTrue();
            }
示例#7
0
            private static Expression <Func <Affiliation, bool> > AffiliationBasedOn(UpdateMyAffiliationCommand command)
            {
                Expression <Func <Affiliation, bool> > affiliationBasedOnCommand = a =>
                                                                                   a.JobTitles == command.JobTitles &&
                                                                                   a.IsClaimingStudent == command.IsClaimingStudent &&
                                                                                   a.IsClaimingEmployee == command.IsClaimingEmployee &&
                                                                                   a.IsClaimingInternationalOffice == command.IsClaimingInternationalOffice &&
                                                                                   a.IsClaimingAdministrator == command.IsClaimingAdministrator &&
                                                                                   a.IsClaimingFaculty == command.IsClaimingFaculty &&
                                                                                   a.IsClaimingStaff == command.IsClaimingStaff;

                return(affiliationBasedOnCommand);
            }
示例#8
0
            public void IsValidWhen_PrincipalIdentityName_MatchesUser()
            {
                const string principalIdentityName = "*****@*****.**";
                var          principal             = principalIdentityName.AsPrincipal();
                var          command = new UpdateMyAffiliationCommand
                {
                    Principal = principal,
                };
                var user = new User {
                    Name = principal.Identity.Name
                };
                var entities = new Mock <IQueryEntities>(MockBehavior.Strict).Initialize();

                entities.Setup(m => m.Query <User>()).Returns(new[] { user }.AsQueryable);
                entities.Setup(m => m.Query <Establishment>()).Returns(new Establishment[] { }.AsQueryable);
                var validator = new UpdateMyAffiliationValidator(entities.Object);
                var results   = validator.Validate(command);
                var error     = results.Errors.SingleOrDefault(e => e.PropertyName == "Principal");

                error.ShouldBeNull();
            }