public async void ShouldThrowValidationExceptionOnModifyWhenEndDateIsBeforeStartDateAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); CalendarEntry randomCalendarEntry = CreateRandomCalendarEntry(dateTime); CalendarEntry inputCalendarEntry = randomCalendarEntry; int randomMinutes = GetRandomNumber(); inputCalendarEntry.UpdatedDate = dateTime.AddMinutes(randomMinutes); inputCalendarEntry.StartDate = dateTime.AddMinutes(randomMinutes); var invalidCalendarEntryException = new InvalidCalendarEntryException(); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.EndDate), values: $"Date is before StartDate"); var expectedCalendarEntryValidationException = new CalendarEntryValidationException(invalidCalendarEntryException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <CalendarEntry> modifyCalendarEntryTask = this.calendarEntryService.ModifyCalendarEntryAsync(inputCalendarEntry); // then await Assert.ThrowsAsync <CalendarEntryValidationException>(() => modifyCalendarEntryTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameValidationExceptionAs( expectedCalendarEntryValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectCalendarEntryByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnCreateWhenCreatedDateIsNotRecentAndLogItAsync( int minutes) { // given DateTimeOffset randomDate = GetRandomDateTime(); CalendarEntry randomCalendarEntry = CreateRandomCalendarEntry(randomDate); CalendarEntry invalidCalendarEntry = randomCalendarEntry; invalidCalendarEntry.CreatedDate = randomDate.AddMinutes(minutes); invalidCalendarEntry.UpdatedDate = invalidCalendarEntry.CreatedDate; var invalidCalendarEntryException = new InvalidCalendarEntryException(); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.CreatedDate), values: $"Date is not recent"); var expectedCalendarEntryValidationException = new CalendarEntryValidationException(invalidCalendarEntryException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDate); // when ValueTask <CalendarEntry> createCalendarEntryTask = this.calendarEntryService.AddCalendarEntryAsync(invalidCalendarEntry); // then await Assert.ThrowsAsync <CalendarEntryValidationException>(() => createCalendarEntryTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameValidationExceptionAs( expectedCalendarEntryValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertCalendarEntryAsync(It.IsAny <CalendarEntry>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnModifyIfCalendarEntryIsInvalidAndLogItAsync( string invalidText) { // given var invalidCalendarEntry = new CalendarEntry { Label = invalidText, Description = invalidText }; var invalidCalendarEntryException = new InvalidCalendarEntryException(); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.Id), values: "Id is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.Label), values: "Text is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.Description), values: "Text is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.StartDate), values: "Date is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.EndDate), values: "Date is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.RemindAtDateTime), values: "Date is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.CreatedDate), values: "Date is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.UpdatedDate), values: new string[] { "Date is required", $"Date is the same as {nameof(CalendarEntry.CreatedDate)}" }); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.CreatedBy), values: "Id is required"); invalidCalendarEntryException.AddData( key: nameof(CalendarEntry.UpdatedBy), values: "Id is required"); var expectedCalendarEntryValidationException = new CalendarEntryValidationException(invalidCalendarEntryException); // when ValueTask <CalendarEntry> createCalendarEntryTask = this.calendarEntryService.ModifyCalendarEntryAsync(invalidCalendarEntry); // then await Assert.ThrowsAsync <CalendarEntryValidationException>(() => createCalendarEntryTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameValidationExceptionAs( expectedCalendarEntryValidationException))), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }