public static void DoTest1() { var context = GetDomainContext(); var id = new TestAggregateId(TestId); var executor = context.NewCommandExecutor<SnapshotTestRoot>(); executor.Execute(new TestCommand1 { AggregateId = new TestAggregateId(id), Name = Guid.NewGuid().ToString().Substring(0, 8), }); }
public void ClearChanges_NoEventsReturned() { //Arrange var guid = Guid.Parse("5ffdfca6-2cb6-4a22-8943-339a65298a2b"); var ta = TestAggregate.Create(TestAggregateId.FromGuid(guid), StringValue.FromString("testtest"), BoolValue.FromBool(true)); ta.UpdateString(StringValue.FromString("Hello world")); //Act ta.ClearChanges(); var changes = ta.GetChanges(); //Arrange Assert.AreEqual(0, changes.Count); }
public void Entity_Create_ValidData_ReturnsAggregate() { //Arrange var taGuid = Guid.Parse("5ffdfca6-2cb6-4a22-8943-339a65298a2b"); var ta = TestAggregate.Create(TestAggregateId.FromGuid(taGuid), StringValue.FromString("testtest"), BoolValue.FromBool(true)); var teGuid = Guid.Parse("12c9077f-ddc1-4ded-bbc6-ff816d384788"); //Act ta.AddEntity(TestEntityId.FromGuid(teGuid), StringValue.FromString("entity")); //Assert Assert.IsNotNull(ta.MyTe); Assert.AreEqual(teGuid, ta.MyTe.Id.Value); Assert.AreEqual("entity", ta.MyTe.MyString.Value); }
public static void DoTest2() { var context = GetDomainContext(); var id = new TestAggregateId(TestId); var executor = context.NewCommandExecutor<SnapshotTestRoot>(); executor.Execute(new TestCommand2 { AggregateId = new TestAggregateId(id), Description = Guid.NewGuid().ToString().Substring(0, 8), Amount = 100, }); }
public void Entity_ClearChanges_NoEventsReturned() { //Arrange var guid = Guid.Parse("5ffdfca6-2cb6-4a22-8943-339a65298a2b"); var ta = TestAggregate.Create(TestAggregateId.FromGuid(guid), StringValue.FromString("testtest"), BoolValue.FromBool(true)); var teGuid = Guid.Parse("12c9077f-ddc1-4ded-bbc6-ff816d384788"); ta.AddEntity(TestEntityId.FromGuid(teGuid), StringValue.FromString("entity")); //Act ta.ClearChanges(); var changes = ta.GetChanges(); //Arrange Assert.AreEqual(0, changes.Count); }
public void GetChanges_CommandsExecuted_EventsReturned() { //Arrange var guid = Guid.Parse("5ffdfca6-2cb6-4a22-8943-339a65298a2b"); var ta = TestAggregate.Create(TestAggregateId.FromGuid(guid), StringValue.FromString("testtest"), BoolValue.FromBool(true)); ta.UpdateString(StringValue.FromString("Hello world")); //Act var changes = ta.GetChanges(); //Arrange Assert.AreEqual(2, changes.Count); Assert.IsTrue(changes[0] is CreatedEvent); Assert.IsTrue(changes[1] is StringUpdatedEvent); }
protected override void When(IDomainEvent domainEvent) { switch (domainEvent) { case TestAggregateCreated testAggregateCreated: SetIdentity(TestAggregateId.Of(Guid.Parse(testAggregateCreated.AggregateId))); break; case TransformationDone transformationDone: Value = transformationDone.Value; break; default: throw new ArgumentOutOfRangeException(nameof(domainEvent)); } }
public void Entity_GetChanges_CommandsExecuted_EventsReturned() { //Arrange var guid = Guid.Parse("5ffdfca6-2cb6-4a22-8943-339a65298a2b"); var ta = TestAggregate.Create(TestAggregateId.FromGuid(guid), StringValue.FromString("testtest"), BoolValue.FromBool(true)); var teGuid = Guid.Parse("12c9077f-ddc1-4ded-bbc6-ff816d384788"); ta.AddEntity(TestEntityId.FromGuid(teGuid), StringValue.FromString("entity")); //Act var changes = ta.GetChanges(); //Arrange Assert.AreEqual(2, changes.Count); Assert.IsTrue(changes[0] is CreatedEvent); Assert.IsTrue(changes[1] is TestEntityAddedToTestAggregateEvent); }
public static TestAggregate NewFrom(TestAggregateId id) => (TestAggregate) new TestAggregate().ApplyChange(TestAggregateCreated.Of(id));
public TestUpdateCommand(TestAggregateId id) { }
public TestCreateCommand(TestAggregateId id) { }
public TestSagaStartedEvent(TestAggregateId sender, TestAggregateId receiver, Test sentTest) { Sender = sender; Receiver = receiver; SentTest = sentTest; }
public TestCreateEvent(TestAggregateId id) { Id = id; }
public TestSagaStartedEvent(TestAggregateId sender, TestAggregateId receiver, Abstractions.Entities.Test sentTest) { Sender = sender; Receiver = receiver; SentTest = sentTest; }
public void Aggregates_can_be_hydrated() { var senderTestId = TestId.NewDeterministic(TestIdNamespace, (DateTime.UtcNow.Day - 1).ToString()); var senderTest = new Test(senderTestId); var receiver = TestAggregateId.NewDeterministic(TestIdNamespace, (DateTime.UtcNow.Day + 1).ToString()); var sender = TestAggregateId.NewDeterministic(TestIdNamespace, DateTime.UtcNow.Day.ToString()); RunOn(() => { //set up event probe // set up sender var senderProbe = CreateTestProbe("sender-probe"); var commandId = CommandId.New; _aggregateProxy.Value.Tell(new CreateTestCommand(sender, commandId), senderProbe); senderProbe.ExpectMsg <TestExecutionResult>( x => x.Result.IsSuccess && x.SourceId.Value == commandId.Value, TimeSpan.FromSeconds(10)); var nextAggregateCommand = new AddTestCommand(sender, CommandId.New, senderTest); _aggregateProxy.Value.Tell(nextAggregateCommand, senderProbe); senderProbe.ExpectMsg <TestExecutionResult>( x => x.Result.IsSuccess, TimeSpan.FromSeconds(10)); // set up receiver var receiverProbe = CreateTestProbe("receiver-probe"); var commandId2 = CommandId.New; _aggregateProxy.Value.Tell(new CreateTestCommand(receiver, commandId2), receiverProbe); receiverProbe.ExpectMsg <TestExecutionResult>( x => x.Result.IsSuccess && x.SourceId.Value == commandId2.Value, TimeSpan.FromSeconds(10)); }, _config.Client); EnterBarrier("aggregates-hydrated"); var eventProbe = CreateTestProbe("event-probe"); RunOn(() => { Sys.EventStream.Subscribe(eventProbe, typeof(DomainEvent <TestSaga, TestSagaId, TestSagaStartedEvent>)); Sys.EventStream.Subscribe(eventProbe, typeof(DomainEvent <TestSaga, TestSagaId, TestSagaCompletedEvent>)); Sys.EventStream.Subscribe(eventProbe, typeof(DomainEvent <TestSaga, TestSagaId, TestSagaTransactionCompletedEvent>)); }, _config.Worker); RunOn(() => { var senderProbe = CreateTestProbe("saga-starting-probe"); var nextAggregateCommand = new GiveTestCommand(sender, CommandId.New, receiver, senderTest); _aggregateProxy.Value.Tell(nextAggregateCommand, senderProbe); senderProbe.ExpectMsg <TestExecutionResult>( x => x.Result.IsSuccess, TimeSpan.FromSeconds(10)); }, _config.Client); RunOn(() => { eventProbe. ExpectMsg <DomainEvent <TestSaga, TestSagaId, TestSagaStartedEvent> >( x => x.AggregateEvent.Sender.Equals(sender) && x.AggregateEvent.Receiver.Equals(receiver) && x.AggregateEvent.SentTest.Equals(senderTest), TimeSpan.FromSeconds(20)); eventProbe. ExpectMsg <DomainEvent <TestSaga, TestSagaId, TestSagaTransactionCompletedEvent> >(TimeSpan.FromSeconds(20)); eventProbe. ExpectMsg <DomainEvent <TestSaga, TestSagaId, TestSagaCompletedEvent> >(TimeSpan.FromSeconds(20)); }, _config.Worker); EnterBarrier("saga-finished"); }
public void Identity_NewComb_IsValid() { var testId = TestAggregateId.NewComb(); TestAggregateId.IsValid(testId.Value).Should().BeTrue(testId.Value); }
public void Identity_NewDeterministic_IsValid() { var testId = TestAggregateId.NewDeterministic(Guid.NewGuid(), Guid.NewGuid().ToString()); TestAggregateId.IsValid(testId.Value).Should().BeTrue(testId.Value); }
public TestAggregateRoot(TestAggregateId id) { var @event = new TestCreateEvent(id); Apply(@event); }
public TestUpdateEvent(TestAggregateId id, string updatedFieldValue) { Id = id; UpdatedFieldValue = updatedFieldValue; }
public void Hydrate(TestAsyncSagaSnapshot aggregateSnapshot) { Sender = TestAggregateId.With(aggregateSnapshot.SenderId); Receiver = TestAggregateId.With(aggregateSnapshot.ReceiverId); Test = new Entities.Test(TestId.With(aggregateSnapshot.Test.Id)); }
private void Apply(TestAggregateCreated e) { SetIdentity(TestAggregateId.Of(Guid.Parse(e.AggregateId))); }
public void Identity_CannotCreate_WithBadIds(string badIdValue) { Action action = () => TestAggregateId.With(badIdValue); action.Should().Throw <ArgumentException>(); }
public static TestAggregateId GenerateTestAggregateId() => TestAggregateId.Of(Guid.NewGuid());
public TestCreatePublicEvent(TestAggregateId id) { Id = id; Tenant = Id.Tenant; }
public TestAggregate(TestAggregateId identity) : base(identity) { testEntity = new TestEntity(this, new TestEntityId(4)); }