public void CommandMustBeExecutedOnAggregateWithMatchingEnrollmentId() { var enrollment = new EnrollmentAggregate(EnrollmentAggregate.EnrollmentId.New); var recordingUser = new ApplicationUser() { Id = Guid.NewGuid() }; var command = new RecordContact.Command() { EnrollmentId = EnrollmentAggregate.EnrollmentId.New.GetGuid(), CommunicationChannel = CommunicationChannel.OutgoingEmail, Content = "ala ma kota", AdditionalNotes = "notatka testowa" }; Assert.Throws <AggregateMismatchException>(() => enrollment.RecordContact( new RecordContact.Command() { EnrollmentId = EnrollmentAggregate.EnrollmentId.New.GetGuid(), CommunicationChannel = CommunicationChannel.OutgoingEmail, Content = "ala ma kota", AdditionalNotes = "notatka testowa" }, recordingUser)); }
public void CommandMustContain_EnrollmentId_CommunicationChannel_Content_fields() { var enrollment = new EnrollmentAggregate(EnrollmentAggregate.EnrollmentId.New); var command = new RecordContact.Command() { EnrollmentId = enrollment.Id.GetGuid() }; var result = enrollment.RecordContact(command, new Models.Users.ApplicationUser()); Assert.False(result.IsSuccess); var error = Assert.IsType <Error.ValidationFailed>(result.Error); Assert.Equal(2, error.Failures.Count); }
public void AfterRegisteringContact_EnrollmentEmitsContactOccuredEvent() { // Arrange var id = EnrollmentAggregate.EnrollmentId.New; var event1 = new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, RecruitmentFormSubmitted>( new RecruitmentFormSubmitted( NodaTime.SystemClock.Instance.GetCurrentInstant(), "Andrzej", "Strzelba", EmailAddress.Parse("*****@*****.**"), Consts.FakePhoneNumber, "ala ma kota", 1, "Wolne Miasto Gdańsk", new[] { "Wadowice" }, new[] { 1 }, true), new Metadata(), DateTimeOffset.Now, id, 1 ); var enrollment = new EnrollmentAggregate(id); enrollment.ApplyEvents(new IDomainEvent[] { event1 }); var recordingUser = new ApplicationUser() { Id = Guid.NewGuid() }; // Act var result = enrollment.RecordContact(new RecordContact.Command() { EnrollmentId = id.GetGuid(), CommunicationChannel = CommunicationChannel.OutgoingEmail, Content = "ala ma kota", AdditionalNotes = "notatka testowa" }, recordingUser); // Assert Assert.True(result.IsSuccess); var uncommittedEvent = Assert.Single(enrollment.UncommittedEvents, e => e.AggregateEvent is ContactOccured); var @event = Assert.IsType <ContactOccured>(uncommittedEvent.AggregateEvent); Assert.Equal(recordingUser.Id, @event.RecordingUserId); Assert.Equal(CommunicationChannel.OutgoingEmail, @event.CommunicationChannel); Assert.Equal("ala ma kota", @event.Content); Assert.Equal("notatka testowa", @event.AdditionalNotes); }
public void CommandMustSpecifyExistingEnrollmentId() { // Arrange var id = EnrollmentAggregate.EnrollmentId.New; var enrollment = new EnrollmentAggregate(id); var recordingUser = new ApplicationUser() { Id = Guid.NewGuid() }; var command = new RecordContact.Command() { EnrollmentId = id.GetGuid(), CommunicationChannel = CommunicationChannel.OutgoingEmail, Content = "ala ma kota", AdditionalNotes = "notatka testowa" }; var result = enrollment.RecordContact(command, recordingUser); Assert.False(result.IsSuccess); Assert.IsType <Error.ResourceNotFound>(result.Error); }