コード例 #1
0
        public async Task ShouldThrowValidationExceptionOnModifyIfGuardianDoesntExistAndLogItAsync()
        {
            // given
            int            randomNegativeMinutes = GetNegativeRandomNumber();
            DateTimeOffset dateTime            = GetRandomDateTime();
            Guardian       randomGuardian      = CreateRandomGuardian(dateTime);
            Guardian       nonExistentGuardian = randomGuardian;

            nonExistentGuardian.CreatedDate = dateTime.AddMinutes(randomNegativeMinutes);
            Guardian noGuardian = null;
            var      notFoundGuardianException = new NotFoundGuardianException(nonExistentGuardian.Id);

            var expectedGuardianValidationException =
                new GuardianValidationException(notFoundGuardianException);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectGuardianByIdAsync(nonExistentGuardian.Id))
            .ReturnsAsync(noGuardian);

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

            // when
            ValueTask <Guardian> modifyGuardianTask =
                this.guardianService.ModifyGuardianAsync(nonExistentGuardian);

            // then
            await Assert.ThrowsAsync <GuardianValidationException>(() =>
                                                                   modifyGuardianTask.AsTask());

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

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectGuardianByIdAsync(nonExistentGuardian.Id),
                                          Times.Once);

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

            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
            this.dateTimeBrokerMock.VerifyNoOtherCalls();
        }
コード例 #2
0
        public async void ShouldThrowValidationExceptionOnDeleteWhenStorageGuardianIsNullAndLogItAsync()
        {
            // given
            Guid     randomGuardianId          = Guid.NewGuid();
            Guid     inputGuardianId           = randomGuardianId;
            Guardian invalidStorageGuardian    = null;
            var      notFoundGuardianException = new NotFoundGuardianException(inputGuardianId);

            var expectedGuardianValidationException =
                new GuardianValidationException(notFoundGuardianException);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectGuardianByIdAsync(inputGuardianId))
            .ReturnsAsync(invalidStorageGuardian);

            // when
            ValueTask <Guardian> deleteGuardianTask =
                this.guardianService.RemoveGuardianByIdAsync(inputGuardianId);

            // then
            await Assert.ThrowsAsync <GuardianValidationException>(() =>
                                                                   deleteGuardianTask.AsTask());

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

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

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectGuardianByIdAsync(inputGuardianId),
                                          Times.Once);

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

            this.dateTimeBrokerMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
        }
        public async Task ShouldThrowValidationExceptionOnRetrieveWhenStorageGuardianIsNullAndLogItAsync()
        {
            // given
            DateTimeOffset dateTimeOffset        = GetRandomDateTime();
            Guid           randomGuardianId      = Guid.NewGuid();
            Guid           inputGuardianId       = randomGuardianId;
            Guardian       nullGuardian          = default;
            var            nullGuardianException = new NotFoundGuardianException(guardianId: inputGuardianId);

            var expectedValidationException =
                new GuardianValidationException(nullGuardianException);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectGuardianByIdAsync(inputGuardianId))
            .ReturnsAsync(nullGuardian);

            // when
            ValueTask <Guardian> retrieveGuardianTask =
                this.guardianService.RetrieveGuardianByIdAsync(inputGuardianId);

            // then
            await Assert.ThrowsAsync <GuardianValidationException>(() =>
                                                                   retrieveGuardianTask.AsTask());

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

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectGuardianByIdAsync(inputGuardianId),
                                          Times.Once);

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

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