Example #1
0
        public async Task ShouldThorwValidationExceptionOnModifyIfTeacherDoesntExistAndLogItAsync()
        {
            // given
            int            randomNegativeMinutes = GetNegativeRandomNumber();
            DateTimeOffset dateTime           = GetRandomDateTime();
            Teacher        randomTeacher      = CreateRandomTeacher(dateTime);
            Teacher        nonExistentTeacher = randomTeacher;

            nonExistentTeacher.CreatedDate = dateTime.AddMinutes(randomNegativeMinutes);
            Teacher noTeacher = null;
            var     notFoundTeacherException = new NotFoundTeacherException(nonExistentTeacher.Id);

            var expectedTeacherValidationException =
                new TeacherValidationException(notFoundTeacherException);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectTeacherByIdAsync(nonExistentTeacher.Id))
            .ReturnsAsync(noTeacher);

            this.dateTimeBrokerMock.Setup(broker =>
                                          broker.GetCurrentDateTime())
            .Returns(dateTime);

            // when
            ValueTask <Teacher> modifyTeacherTask =
                this.teacherService.ModifyTeacherAsync(nonExistentTeacher);

            // then
            await Assert.ThrowsAsync <TeacherValidationException>(() =>
                                                                  modifyTeacherTask.AsTask());

            this.dateTimeBrokerMock.Verify(broker =>
                                           broker.GetCurrentDateTime(),
                                           Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectTeacherByIdAsync(nonExistentTeacher.Id),
                                          Times.Once);

            this.loggingBrokerMock.Verify(broker =>
                                          broker.LogError(It.Is(SameExceptionAs(
                                                                    expectedTeacherValidationException))),
                                          Times.Once);

            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
            this.dateTimeBrokerMock.VerifyNoOtherCalls();
        }
Example #2
0
        public async Task ShouldThrowValidatonExceptionOnDeleteWhenStorageTeacherIsInvalidAndLogItAsync()
        {
            // given
            DateTimeOffset dateTime           = GetRandomDateTime();
            Teacher        randomTeacher      = CreateRandomTeacher(dateTime);
            Guid           inputTeacherId     = randomTeacher.Id;
            Teacher        inputTeacher       = randomTeacher;
            Teacher        nullStorageTeacher = null;

            var notFoundTeacherException = new NotFoundTeacherException(inputTeacherId);

            var expectedTeacherValidationException =
                new TeacherValidationException(notFoundTeacherException);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectTeacherByIdAsync(inputTeacherId))
            .ReturnsAsync(nullStorageTeacher);

            // when
            ValueTask <Teacher> removeTeacherTask =
                this.teacherService.RemoveTeacherByIdAsync(inputTeacherId);

            // then
            await Assert.ThrowsAsync <TeacherValidationException>(() => removeTeacherTask.AsTask());

            this.loggingBrokerMock.Verify(broker =>
                                          broker.LogError(It.Is(SameExceptionAs(
                                                                    expectedTeacherValidationException))),
                                          Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectTeacherByIdAsync(inputTeacherId),
                                          Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.DeleteTeacherAsync(It.IsAny <Teacher>()),
                                          Times.Never);

            this.storageBrokerMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.dateTimeBrokerMock.VerifyNoOtherCalls();
        }