示例#1
0
 public PublicServiceWasRenamed(
     PublicServiceId publicServiceId,
     PublicServiceName newName)
 {
     PublicServiceId = publicServiceId;
     NewName         = newName;
 }
示例#2
0
        public Task WhenIpdcCodeWasSet()
        {
            var clockProviderStub = new ClockProviderStub(Today);

            var publicServiceId   = new PublicServiceId("DVR000000001");
            var publicServiceName = new PublicServiceName("Test");
            var events            = new object[]
            {
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new IpdcCodeWasSet(publicServiceId, new IpdcCode("1234")),
            };

            return(new PublicServiceListProjections(clockProviderStub)
                   .Scenario()
                   .Given(events)
                   .Expect(new PublicServiceListItem
            {
                Name = publicServiceName,
                PublicServiceId = publicServiceId,
                CurrentLifeCycleStageType = null,
                CurrentLifeCycleStageId = null,
                CurrentLifeCycleStageEndsAt = null,
                IpdcCode = "1234"
            }));
        }
示例#3
0
        public void CannotPerformSimpleUpdateOnRemovedPublicService(
            PublicServiceId publicServiceId,
            PublicServiceName publicServiceName,
            PublicServiceName publicServiceRename,
            ReasonForRemoval reasonForRemoval,
            OvoNumber ovoNumber,
            Organisation organisation)
        {
            _mocker.MockOrganisationProvider(ovoNumber, organisation);

            Assert(new Scenario()
                   .Given(publicServiceId,
                          new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                          new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
                   .When(new UpdatePublicService(publicServiceId, publicServiceRename, null, false))
                   .Throws(new CannotPerformActionOnRemovedPublicService()));

            Assert(new Scenario()
                   .Given(publicServiceId,
                          new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                          new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
                   .When(new UpdatePublicService(publicServiceId, publicServiceName, ovoNumber, false))
                   .Throws(new CannotPerformActionOnRemovedPublicService()));

            Assert(new Scenario()
                   .Given(publicServiceId,
                          new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                          new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
                   .When(new UpdatePublicService(publicServiceId, publicServiceName, null, true))
                   .Throws(new CannotPerformActionOnRemovedPublicService()));
        }
示例#4
0
        public void WithOvoNumberChanged(
            Fixture fixture,
            OvoNumber ovoNumber,
            Organisation organisation,
            PublicServiceId publicServiceId,
            PublicServiceName publicServiceName,
            PrivateZoneId privateZoneId)
        {
            _mocker.MockOrganisationProvider(ovoNumber, organisation);

            var newOvoNumber    = fixture.Create <OvoNumber>();
            var newOrganisation = fixture.Create <Organisation>();

            _mocker.MockOrganisationProvider(newOvoNumber, newOrganisation);

            Assert(
                new Scenario()
                .Given(publicServiceId,
                       new PublicServiceWasRegistered(publicServiceId, publicServiceName, privateZoneId),
                       new CompetentAuthorityWasAssigned(
                           publicServiceId,
                           organisation.OvoNumber,
                           organisation.Name,
                           organisation.Provenance))
                .When(new UpdatePublicService(publicServiceId, publicServiceName, newOvoNumber, false))
                .Then(publicServiceId,
                      new CompetentAuthorityWasAssigned(
                          publicServiceId,
                          newOrganisation.OvoNumber,
                          newOrganisation.Name,
                          newOrganisation.Provenance)));
        }
示例#5
0
        public void WithEveryPropertyChanged(
            OvoNumber ovoNumber,
            Organisation organisation,
            PublicServiceId publicServiceId,
            PublicServiceName publicServiceName,
            PrivateZoneId privateZoneId)
        {
            _mocker.MockOrganisationProvider(ovoNumber, organisation);

            var newPublicServiceName = new PublicServiceName("Uitreiken identiteitskaart");

            Assert(
                new Scenario()
                .Given(publicServiceId,
                       new PublicServiceWasRegistered(publicServiceId, publicServiceName, privateZoneId))
                .When(new UpdatePublicService(publicServiceId, newPublicServiceName, ovoNumber, true))
                .Then(publicServiceId,
                      new PublicServiceWasRenamed(publicServiceId, newPublicServiceName),
                      new CompetentAuthorityWasAssigned(
                          publicServiceId,
                          organisation.OvoNumber,
                          organisation.Name,
                          organisation.Provenance),
                      new OrafinExportPropertyWasSet(
                          publicServiceId,
                          true)));
        }
        private void When(PublicServiceWasRegistered @event)
        {
            _id   = new PublicServiceId(@event.PublicServiceId);
            _name = new PublicServiceName(@event.Name);

            _lifeCycle.Route(@event);
        }
示例#7
0
        public Task DoesNotClearLifeCycleStageWhenAnotherLifeCycleStageNoLongerOverlapsWithToday()
        {
            var clockProviderStub = new ClockProviderStub(Today);

            var publicServiceId   = new PublicServiceId("DVR000000001");
            var publicServiceName = new PublicServiceName("Test");
            var events            = new object[]
            {
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), LifeCycleStageType.Active, PeriodOverlappingWithToday),
                new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(2), LifeCycleStageType.PhasingOut, PeriodOverlappingWithTomorrow),
                new PeriodOfLifeCycleStageWasChanged(publicServiceId, LifeCycleStageId.FromNumber(2), PeriodOverlappingWithYesterday),
            };

            return(new PublicServiceListProjections(clockProviderStub)
                   .Scenario()
                   .Given(events)
                   .Expect(new PublicServiceListItem
            {
                Name = publicServiceName,
                PublicServiceId = publicServiceId,
                CurrentLifeCycleStageType = "Active",
                CurrentLifeCycleStageId = 1,
                CurrentLifeCycleStageEndsAt = LocalDate.FromDateTime(Today),
            }));
        }
示例#8
0
        public Task DoesNotSetNextLifeCycleStageWhenDayHasPassedWhenThatLifeCycleStageWasRemoved()
        {
            var clockProviderStub = new ClockProviderStub(Today);

            var publicServiceId   = new PublicServiceId("DVR000000001");
            var publicServiceName = new PublicServiceName("Test");
            var events            = new object[]
            {
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), LifeCycleStageType.Active, PeriodOverlappingWithToday),
                new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(2), LifeCycleStageType.PhasingOut, PeriodOverlappingWithTomorrow),
                new LifeCycleStageWasRemoved(publicServiceId, LifeCycleStageId.FromNumber(2)),
                new ClockHasTicked(Tomorrow),
            };

            return(new PublicServiceListProjections(clockProviderStub)
                   .Scenario()
                   .Given(events)
                   .Expect(new PublicServiceListItem
            {
                Name = publicServiceName,
                PublicServiceId = publicServiceId,
                CurrentLifeCycleStageType = null,
                CurrentLifeCycleStageId = null,
                CurrentLifeCycleStageEndsAt = null,
            }));
        }
        public void Rename(PublicServiceName newName)
        {
            EnsureNotRemoved();

            if (newName != _name)
            {
                ApplyChange(new PublicServiceWasRenamed(_id, newName));
            }
        }
 public PublicServiceWasRegistered(
     PublicServiceId publicServiceId,
     PublicServiceName name,
     PrivateZoneId privateZoneId)
 {
     PublicServiceId = publicServiceId;
     Name            = name;
     PrivateZoneId   = privateZoneId;
 }
示例#11
0
 public RegisterPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     PrivateZoneId privateZoneId)
 {
     PublicServiceId   = publicServiceId;
     PublicServiceName = publicServiceName;
     PrivateZoneId     = privateZoneId;
 }
        public static PublicService Register(
            PublicServiceId id,
            PublicServiceName name,
            PrivateZoneId privateZoneId)
        {
            var publicService = Factory();

            publicService.ApplyChange(new PublicServiceWasRegistered(id, name, privateZoneId));
            return(publicService);
        }
示例#13
0
 public void WithNullLabels(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new UpdateLabels(publicServiceId, null))
         .ThenNone());
 }
示例#14
0
 public UpdatePublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     OvoNumber ovoNumber,
     bool isSubsidy)
 {
     PublicServiceId   = publicServiceId;
     PublicServiceName = publicServiceName;
     OvoNumber         = ovoNumber;
     IsSubsidy         = isSubsidy;
 }
示例#15
0
 public void WithNoLabels(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new UpdateLabels(publicServiceId, new Dictionary <LabelType, LabelValue>()))
         .ThenNone());
 }
 public void CannotRemovePublicServiceOnRemovedPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     ReasonForRemoval reasonForRemoval)
 {
     Assert(new Scenario()
            .Given(publicServiceId,
                   new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                   new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
            .When(new RemovePublicService(publicServiceId, reasonForRemoval).PerformedByAdmin())
            .Throws(new CannotPerformActionOnRemovedPublicService()));
 }
 public void NonAdminsCantSetIpdcCode(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     IpdcCode ipdcCode)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new SetIpdcCode(publicServiceId, ipdcCode))
         .Throws(new InsufficientRights()));
 }
示例#18
0
 public void NonAdminsCantSetLegislativeDocumentId(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     LegislativeDocumentId legislativeDocumentId)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new SetLegislativeDocumentId(publicServiceId, legislativeDocumentId))
         .Throws(new InsufficientRights()));
 }
示例#19
0
 public void RegisterWithIdAndName(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     PrivateZoneId privateZoneId)
 {
     Assert(
         new Scenario()
         .Given()
         .When(new RegisterPublicService(publicServiceId, publicServiceName, privateZoneId))
         .Then(publicServiceId,
               new PublicServiceWasRegistered(publicServiceId, publicServiceName, privateZoneId)));
 }
示例#20
0
 public void WithValidData(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     LifeCycleStageType lifeCycleStageType,
     LifeCycleStagePeriod period)
 {
     Assert(new Scenario()
            .Given(publicServiceId,
                   new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
            .When(new AddStageToLifeCycle(publicServiceId, lifeCycleStageType, period))
            .Then(publicServiceId,
                  new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), lifeCycleStageType, period)));
 }
示例#21
0
 public void WhenLegislativeDocumentIdHasNotBeenSetBefore(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     LegislativeDocumentId legislativeDocumentId)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new SetLegislativeDocumentId(publicServiceId, legislativeDocumentId).PerformedByAdmin())
         .Then(publicServiceId,
               new LegislativeDocumentIdWasSet(publicServiceId, legislativeDocumentId)));
 }
 public void BeheerdersCantRemoveAPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     ReasonForRemoval reasonForRemoval)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
         .When(new RemovePublicService(publicServiceId, reasonForRemoval).PerformedByBeheerder())
         .Throws(new InsufficientRights()));
 }
 public void WhenIpdcCodeHasNotBeenSetBefore(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     IpdcCode ipdcCode)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered))
         .When(new SetIpdcCode(publicServiceId, ipdcCode).PerformedByAdmin())
         .Then(publicServiceId,
               new IpdcCodeWasSet(publicServiceId, ipdcCode)));
 }
示例#24
0
 public void CantSetAnLegislativeDocumentIdOnARemovedPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     ReasonForRemoval reasonForRemoval,
     LegislativeDocumentId legislativeDocumentId)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
         .When(new SetLegislativeDocumentId(publicServiceId, legislativeDocumentId).PerformedByAdmin())
         .Throws(new CannotPerformActionOnRemovedPublicService()));
 }
 public void CannotRemoveLifeCycleStageOnRemovedPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     ReasonForRemoval reasonForRemoval,
     LifeCycleStagePeriod period)
 {
     Assert(new Scenario()
            .Given(publicServiceId,
                   new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                   new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), LifeCycleStageType.PhasingOut, period),
                   new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
            .When(new RemoveStageFromLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1)))
            .Throws(new CannotPerformActionOnRemovedPublicService()));
 }
 public void CantRemoveARemovedLifeCycleStage(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     LifeCycleStagePeriod period)
 {
     Assert(
         new Scenario()
         .Given(publicServiceId,
                new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), LifeCycleStageType.PhasingOut, period),
                new LifeCycleStageWasRemoved(publicServiceId, LifeCycleStageId.FromNumber(1)))
         .When(new RemoveStageFromLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1)))
         .Throws(new LifeCycleStageWithGivenIdNotFound(1)));
 }
示例#27
0
 public void CannotSetOnRemovedPublicService(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     ReasonForRemoval reasonForRemoval,
     LifeCycleStageType lifeCycleStageType,
     LifeCycleStagePeriod period)
 {
     Assert(new Scenario()
            .Given(publicServiceId,
                   new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                   new PublicServiceWasRemoved(publicServiceId, reasonForRemoval))
            .When(new AddStageToLifeCycle(publicServiceId, lifeCycleStageType, period))
            .Throws(new CannotPerformActionOnRemovedPublicService()));
 }
示例#28
0
 public void WithValidData(
     PublicServiceId publicServiceId,
     PublicServiceName publicServiceName,
     LifeCycleStageType lifeCycleStageType,
     LifeCycleStagePeriod period,
     LifeCycleStageId lifeCycleStageLocalId)
 {
     Assert(new Scenario()
            .Given(publicServiceId,
                   new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                   new StageWasAddedToLifeCycle(publicServiceId, lifeCycleStageLocalId, lifeCycleStageType, period))
            .When(new ChangePeriodOfLifeCycleStage(publicServiceId, lifeCycleStageLocalId, period))
            .Then(publicServiceId,
                  new PeriodOfLifeCycleStageWasChanged(publicServiceId, lifeCycleStageLocalId, period)));
 }
示例#29
0
        public void WithNonExistingOvoNumber(
            OvoNumber ovoNumber,
            PublicServiceId publicServiceId,
            PublicServiceName publicServiceName,
            PrivateZoneId privateZoneId)
        {
            _mocker.MockOrganisationProviderFailure(ovoNumber, new GetOrganisationFailed());

            Assert(
                new Scenario()
                .Given(publicServiceId,
                       new PublicServiceWasRegistered(publicServiceId, publicServiceName, privateZoneId))
                .When(new UpdatePublicService(publicServiceId, publicServiceName, ovoNumber, true))
                .Throws(new GetOrganisationFailed()));     // TODO: this only checks on type. Let's make the Throws method generic?
        }
示例#30
0
        public void LifeCycleCannotHaveOverlappingPeriods(
            PublicServiceId publicServiceId,
            PublicServiceName publicServiceName,
            LifeCycleStageType lifeCycleStage1,
            LifeCycleStageType lifeCycleStage2)
        {
            var period1 = new LifeCycleStagePeriod(new ValidFrom(2018, LifeCycleStageId.FromNumber(1), 1), new ValidTo(2020, LifeCycleStageId.FromNumber(1), 1));
            var period2 = new LifeCycleStagePeriod(new ValidFrom(2019, LifeCycleStageId.FromNumber(1), 1), new ValidTo(2021, LifeCycleStageId.FromNumber(1), 1));

            Assert(new Scenario()
                   .Given(publicServiceId,
                          new PublicServiceWasRegistered(publicServiceId, publicServiceName, PrivateZoneId.Unregistered),
                          new StageWasAddedToLifeCycle(publicServiceId, LifeCycleStageId.FromNumber(1), lifeCycleStage1, period1))
                   .When(new AddStageToLifeCycle(publicServiceId, lifeCycleStage2, period2))
                   .Throws(new LifeCycleCannotHaveOverlappingPeriods()));
        }