public void TestEventMultipleEmitSourcing_AfterManyMultiCommand_TestStateSignalled()
        {
            var eventProbe = CreateTestProbe("event-probe");

            Sys.EventStream.Subscribe(eventProbe, typeof(DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent>));
            var aggregateManager = Sys.ActorOf(Props.Create(() => new TestAggregateManager()), "test-aggregatemanager");
            var aggregateId      = TestAggregateId.New;
            var commandId        = CommandId.New;


            var command = new CreateTestCommand(aggregateId, commandId);

            aggregateManager.Tell(command);

            var test         = new Test(TestId.New);
            var testSourceId = CommandId.New;
            var testCommand  = new AddFourTestsCommand(aggregateId, testSourceId, test);

            aggregateManager.Tell(testCommand);

            var poisonCommand = new PoisonTestAggregateCommand(aggregateId);

            aggregateManager.Tell(poisonCommand);

            var reviveCommand = new PublishTestStateCommand(aggregateId);

            aggregateManager.Tell(reviveCommand);


            eventProbe
            .ExpectMsg <DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent> >(
                x => x.AggregateEvent.LastSequenceNr == 5 &&
                x.AggregateEvent.Version == 5 &&
                x.AggregateEvent.AggregateState.TestCollection.Count == 4);
        }
Esempio n. 2
0
        public void TestEventSourcing_AfterManyTests_TestStateSignalled()
        {
            var probe = CreateTestActor("probe");

            Sys.EventStream.Subscribe(probe, typeof(DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent>));
            var aggregateManager = Sys.ActorOf(Props.Create(() => new TestAggregateManager()), "test-aggregatemanager");
            var aggregateId      = TestAggregateId.New;


            var command = new CreateTestCommand(aggregateId);

            aggregateManager.Tell(command);

            for (var i = 0; i < 5; i++)
            {
                var test        = new Test(TestId.New);
                var testCommand = new AddTestCommand(aggregateId, test);
                aggregateManager.Tell(testCommand);
            }

            var poisonCommand = new PoisonTestAggregateCommand(aggregateId);

            aggregateManager.Tell(poisonCommand);

            var reviveCommand = new PublishTestStateCommand(aggregateId);

            aggregateManager.Tell(reviveCommand);



            ExpectMsg <DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent> >(
                x => x.AggregateEvent.LastSequenceNr == 6 &&
                x.AggregateEvent.Version == 6 &&
                x.AggregateEvent.AggregateState.TestCollection.Count == 5);
        }
Esempio n. 3
0
        public void TestEventSourcing_AfterManyTests_TestStateSignalled()
        {
            var eventProbe = CreateTestProbe("event-probe");

            Sys.EventStream.Subscribe(eventProbe, typeof(IDomainEvent <TestAggregateId, TestStateSignalEvent>));
            var aggregateId = TestAggregateId.New;
            var commandId   = CommandId.New;
            var bus         = Sys.GetExtension <ServiceProviderHolder>().ServiceProvider.GetRequiredService <ICommandBus>();

            var command = new CreateTestCommand(aggregateId, commandId);

            bus.Publish(command).GetAwaiter().GetResult();

            for (var i = 0; i < 5; i++)
            {
                var test          = new Test(TestId.New);
                var testCommandId = CommandId.New;
                var testCommand   = new AddTestCommand(aggregateId, testCommandId, test);
                bus.Publish(testCommand).GetAwaiter().GetResult();
            }

            var poisonCommand = new PoisonTestAggregateCommand(aggregateId);

            bus.Publish(poisonCommand).GetAwaiter().GetResult();

            var reviveCommand = new PublishTestStateCommand(aggregateId);

            bus.Publish(reviveCommand).GetAwaiter().GetResult();

            eventProbe.ExpectMsg <IDomainEvent <TestAggregateId, TestStateSignalEvent> >(
                x => x.AggregateEvent.LastSequenceNr == 6 &&
                x.AggregateEvent.Version == 6 &&
                x.AggregateEvent.AggregateState.TestCollection.Count == 5);
        }
Esempio n. 4
0
        public void InitialState_AfterAggregateCreation_TestStateSignalled()
        {
            var probe = CreateTestActor("probeActor");

            Sys.EventStream.Subscribe(probe, typeof(DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent>));
            var aggregateManager = Sys.ActorOf(Props.Create(() => new TestAggregateManager()), "test-aggregatemanager");

            var aggregateId = TestAggregateId.New;
            var command     = new CreateTestCommand(aggregateId);
            var nextCommand = new PublishTestStateCommand(aggregateId);

            aggregateManager.Tell(command);
            aggregateManager.Tell(nextCommand);

            ExpectMsg <DomainEvent <TestAggregate, TestAggregateId, TestStateSignalEvent> >(
                x => x.AggregateEvent.LastSequenceNr == 1 &&
                x.AggregateEvent.Version == 1 &&
                x.AggregateEvent.State.TestCollection.Count == 0);
        }
Esempio n. 5
0
        public void InitialState_AfterAggregateCreation_TestStateSignalled()
        {
            var eventProbe = CreateTestProbe("event-probe");

            Sys.EventStream.Subscribe(eventProbe, typeof(IDomainEvent <TestAggregateId, TestStateSignalEvent>));
            var bus = Sys.GetExtension <ServiceProviderHolder>().ServiceProvider.GetRequiredService <ICommandBus>();

            var aggregateId = TestAggregateId.New;
            var commandId   = CommandId.New;
            var command     = new CreateTestCommand(aggregateId, commandId);
            var nextCommand = new PublishTestStateCommand(aggregateId);

            bus.Publish(command).GetAwaiter().GetResult();
            bus.Publish(nextCommand).GetAwaiter().GetResult();

            eventProbe.ExpectMsg <IDomainEvent <TestAggregateId, TestStateSignalEvent> >(
                x => x.AggregateEvent.LastSequenceNr == 1 &&
                x.AggregateEvent.Version == 1 &&
                x.AggregateEvent.AggregateState.TestCollection.Count == 0);
        }
Esempio n. 6
0
        private bool Execute(PublishTestStateCommand command)
        {
            Signal(new TestStateSignalEvent(State, LastSequenceNr, Version));

            return(true);
        }
Esempio n. 7
0
        public Task <IExecutionResult> Execute(PublishTestStateCommand command)
        {
            Signal(new TestStateSignalEvent(State, LastSequenceNr, Version));

            return(Task.FromResult(ExecutionResult.Success()));
        }