protected override void When(object @event) { switch (@event) { case ApplicationEvents.Submitted e: Id = new ApplicationId(e.Id); ApplicantId = new ApplicantId(e.ApplicantId); VisaId = new VisaId(e.VisaId); SubmissionDate = SubmissionDate.FromDateTimeOffset(e.SubmissionDate); Status = ApplicationStatus.Submitted; break; case ApplicationEvents.AssignedToReviewer e: ReviewerId = new EmbassyEmployeeId(e.ReviewerId); Status = ApplicationStatus.PendingForReview; break; case ApplicationEvents.DocumentAdded e: var document = new Uri(e.DocumentUrl); Documents.Add(document); break; case ApplicationEvents.ChangesRequested _: Status = ApplicationStatus.ChangesRequested; break; case ApplicationEvents.Approved _: Status = ApplicationStatus.Approved; break; } }
public void AssignToReviewer(EmbassyEmployeeId reviewerId) { Apply(new ApplicationEvents.AssignedToReviewer { ReviewerId = reviewerId }); }
public void ChangeStatusToApprove_Called() { // Arrange var applicantId = new ApplicantId(Guid.NewGuid()); var visaId = new VisaId(Guid.NewGuid()); var submissionDate = SubmissionDate.FromDateTimeOffset(DateTimeOffset.Now.AddDays(-7)); var application = new Application(applicantId, visaId, submissionDate); var documentUrl = new Uri("https://www.streamscheme.com/wp-content/uploads/2020/04/pepega.png"); application.AddDocument(documentUrl); var reviewerId = new EmbassyEmployeeId(Guid.NewGuid()); application.AssignToReviewer(reviewerId); // Act application.Approve(); // Assert Assert.Equal(ApplicationStatus.Approved, application.Status); }