Ejemplo n.º 1
0
        public void ImportStatusFromCrab(
            CrabStreetNameStatusId streetNameStatusId,
            CrabStreetNameId streetNameId,
            CrabStreetNameStatus streetNameStatus,
            CrabLifetime lifeTime,
            CrabTimestamp timestamp,
            CrabOperator beginOperator,
            CrabModification?beginModification,
            CrabOrganisation?beginOrganisation)
        {
            if (IsRemoved && beginModification != CrabModification.Delete)
            {
                throw new InvalidOperationException($"Cannot change removed street name for street name id {_streetNameId}/{streetNameId}");
            }

            var legacyEvent = new StreetNameStatusWasImportedFromCrab(
                streetNameStatusId,
                streetNameId,
                streetNameStatus,
                lifeTime,
                timestamp,
                beginOperator,
                beginModification,
                beginOrganisation);

            ApplyStatusChangesFor(legacyEvent);

            ApplyCompletion();

            ApplyChange(legacyEvent);
        }
        public void AppliesStreetNameStatusEventOnlyWhenChanged(CrabStreetNameStatus givenStatus, Type type)
        {
            //Arrange
            var lifetime = Arrange(Generate.CrabLifetimeWithEndDate(null));

            var streetNameId = Arrange(Generate.StreetNameId);
            var sut          = RegisterWithId(streetNameId);


            //Act
            sut = Act(sut, givenStatus,
                      lifetime,
                      Arrange(Generate.CrabModificationNullableExceptDeleteCorrection)
                      );

            sut = Act(sut, givenStatus,
                      lifetime,
                      Arrange(Generate.CrabModificationNullableExceptDeleteCorrection)
                      );

            sut.Should().HaveChanges();
            sut.Should().HaveSingleChange(type);
            sut.Should().HaveSingleChange <StreetNameBecameComplete>();
            sut.Should().NotHaveAnyChange <StreetNameBecameIncomplete>();
        }
        public void AppliesStreetNameStatusWasCorrectedToCurrent(CrabStreetNameStatus givenStatus)
        {
            //Arrange
            var streetNameId = Arrange(Generate.StreetNameId);
            var sut = RegisterWithId(streetNameId);

            var lifetime = Arrange(Generate.CrabLifetimeWithEndDate(null));
            var statusId = Arrange(Generate.CrabStreetNameStatusId);

            //Act
            sut = Act(sut,
                Arrange(Generate.EnumExcept<CrabStreetNameStatus>(CrabStreetNameStatus.InUse, CrabStreetNameStatus.OutOfUse)),
                lifetime,
                Arrange(Generate.CrabModificationNullableExceptDeleteCorrection),
                statusId);

            sut = Act(sut, givenStatus,
                lifetime,
                CrabModification.Correction,
                statusId);

            sut.Should().HaveChanges();
            sut.Should().HaveSingleChange<StreetNameWasCorrectedToCurrent>()
                .Which.Should().HaveStreetNameId(streetNameId);
        }
        public void AppliesStreetNameBecameCurrent(CrabStreetNameStatus givenStatus)
        {
            //Arrange
            var lifetime = Arrange(Generate.CrabLifetimeWithEndDate(null));

            var streetNameId = Arrange(Generate.StreetNameId);
            var sut          = RegisterWithId(streetNameId);

            //Act
            sut = Act(sut, givenStatus, lifetime, Arrange(Generate.CrabModificationNullableExceptDeleteCorrection));

            sut.Should().HaveChanges();
            sut.Should().HaveSingleChange <StreetNameBecameCurrent>()
            .Which.Should().HaveStreetNameId(streetNameId);
            AssertBecameComplete(sut, streetNameId);
        }
        protected StreetName Act(StreetName sut, CrabStreetNameStatus status, CrabLifetime lifetime, CrabModification?modification, CrabStreetNameStatusId statusId = null)
        {
            LogAct($"ImportStatusFromCrab({status}, {lifetime}, {modification})");

            sut.ImportStatusFromCrab(statusId ?? Arrange(Generate.CrabStreetNameStatusId),
                                     Arrange(Generate.CrabStreetNameId),
                                     status,
                                     lifetime,
                                     Arrange(Generate.CrabTimestamp),
                                     Arrange(Generate.CrabOperator),
                                     modification,
                                     Arrange(Generate.CrabOrganisationNullable)
                                     );

            return(sut);
        }
 public ImportStreetNameStatusFromCrab(
     CrabStreetNameStatusId streetNameStatusId,
     CrabStreetNameId streetNameId,
     CrabStreetNameStatus streetNameStatus,
     CrabLifetime lifeTime,
     CrabTimestamp timestamp,
     CrabOperator @operator,
     CrabModification?modification,
     CrabOrganisation?organisation)
 {
     StreetNameStatusId = streetNameStatusId;
     StreetNameId       = streetNameId;
     StreetNameStatus   = streetNameStatus;
     LifeTime           = lifeTime;
     Timestamp          = timestamp;
     Operator           = @operator;
     Modification       = modification;
     Organisation       = organisation;
 }
 public StreetNameStatusWasImportedFromCrab(
     CrabStreetNameStatusId streetNameStatusId,
     CrabStreetNameId streetNameId,
     CrabStreetNameStatus streetNameStatus,
     CrabLifetime lifetime,
     CrabTimestamp timestamp,
     CrabOperator @operator,
     CrabModification?modification,
     CrabOrganisation?organisation)
 {
     StreetNameStatusId = streetNameStatusId;
     StreetNameId       = streetNameId;
     StreetNameStatus   = streetNameStatus;
     BeginDateTime      = lifetime.BeginDateTime;
     EndDateTime        = lifetime.EndDateTime;
     Timestamp          = timestamp;
     Operator           = @operator;
     Modification       = modification;
     Organisation       = organisation;
 }
 private StreetNameStatusWasImportedFromCrab(
     int streetNameStatusId,
     int streetNameId,
     CrabStreetNameStatus streetNameStatus,
     LocalDateTime?beginDateTime,
     LocalDateTime?endDateTime,
     Instant timestamp,
     string @operator,
     CrabModification?modification,
     CrabOrganisation?organisation) :
     this(
         new CrabStreetNameStatusId(streetNameStatusId),
         new CrabStreetNameId(streetNameId),
         streetNameStatus,
         new CrabLifetime(beginDateTime, endDateTime),
         new CrabTimestamp(timestamp),
         new CrabOperator(@operator),
         modification,
         organisation)
 {
 }