public async Task ShouldDeleteGuardianContactAsync() { // given GuardianContact randomGuardianContact = await PostRandomGuardianContactAsync(); GuardianContact inputGuardianContact = randomGuardianContact; GuardianContact expectedGuardianContact = inputGuardianContact; // when GuardianContact deletedGuardianContact = await this.otripleSApiBroker.DeleteGuardianContactByIdAsync( inputGuardianContact.GuardianId, inputGuardianContact.ContactId); ValueTask <GuardianContact> getGuardianContactByIdTask = this.otripleSApiBroker.GetGuardianContactByIdAsync( inputGuardianContact.GuardianId, inputGuardianContact.ContactId); // then deletedGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); await Assert.ThrowsAsync <HttpResponseNotFoundException>(() => getGuardianContactByIdTask.AsTask()); }
public async Task ShouldThrowServiceExceptionOnAddWhenExceptionOccursAndLogItAsync() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact inputGuardianContact = randomGuardianContact; var exception = new Exception(); var expectedGuardianContactServiceException = new GuardianContactServiceException(exception); this.storageBrokerMock.Setup(broker => broker.InsertGuardianContactAsync(inputGuardianContact)) .ThrowsAsync(exception); // when ValueTask <GuardianContact> addGuardianContactTask = this.guardianContactService.AddGuardianContactAsync(inputGuardianContact); // then await Assert.ThrowsAsync <GuardianContactServiceException>(() => addGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedGuardianContactServiceException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(inputGuardianContact), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenGuardianContactIsNullAndLogItAsync() { // given GuardianContact randomGuardianContact = default; GuardianContact nullGuardianContact = randomGuardianContact; var nullGuardianContactException = new NullGuardianContactException(); var expectedGuardianContactValidationException = new GuardianContactValidationException(nullGuardianContactException); // when ValueTask <GuardianContact> addGuardianContactTask = this.guardianContactService.AddGuardianContactAsync(nullGuardianContact); // then await Assert.ThrowsAsync <GuardianContactValidationException>(() => addGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedGuardianContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(It.IsAny <GuardianContact>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenContactIdIsInvalidAndLogItAsync() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact inputGuardianContact = randomGuardianContact; inputGuardianContact.ContactId = default; var invalidGuardianContactException = new InvalidGuardianContactException( parameterName: nameof(GuardianContact.ContactId), parameterValue: inputGuardianContact.ContactId); var expectedGuardianContactValidationException = new GuardianContactValidationException(invalidGuardianContactException); // when ValueTask <GuardianContact> addGuardianContactTask = this.guardianContactService.AddGuardianContactAsync(inputGuardianContact); // then await Assert.ThrowsAsync <GuardianContactValidationException>(() => addGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedGuardianContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(It.IsAny <GuardianContact>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldGetAllGuardianContactsAsync() { // given var randomGuardianContacts = new List <GuardianContact>(); for (int i = 0; i <= GetRandomNumber(); i++) { randomGuardianContacts.Add(await PostRandomGuardianContactAsync()); } List <GuardianContact> inputGuardianContacts = randomGuardianContacts; List <GuardianContact> expectedGuardianContacts = inputGuardianContacts.ToList(); // when List <GuardianContact> actualGuardianContacts = await this.otripleSApiBroker.GetAllGuardianContactsAsync(); // then foreach (GuardianContact expectedGuardianContact in expectedGuardianContacts) { GuardianContact actualGuardianContact = actualGuardianContacts.Single(guardianContact => guardianContact.GuardianId == expectedGuardianContact.GuardianId && guardianContact.ContactId == expectedGuardianContact.ContactId); actualGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); await DeleteGuardianContactAsync(actualGuardianContact); } }
public async Task ShouldRetrieveGuardianContactById() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact storageGuardianContact = randomGuardianContact; GuardianContact expectedGuardianContact = storageGuardianContact; this.storageBrokerMock.Setup(broker => broker.SelectGuardianContactByIdAsync(randomGuardianContact.GuardianId, randomGuardianContact.ContactId)) .Returns(new ValueTask <GuardianContact>(randomGuardianContact)); // when GuardianContact actualGuardianContact = await this.guardianContactService.RetrieveGuardianContactByIdAsync( randomGuardianContact.GuardianId, randomGuardianContact.ContactId); // then actualGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); this.storageBrokerMock.Verify(broker => broker.SelectGuardianContactByIdAsync(randomGuardianContact.GuardianId, randomGuardianContact.ContactId), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldAddGuardianContactAsync() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact inputGuardianContact = randomGuardianContact; GuardianContact storageGuardianContact = randomGuardianContact; GuardianContact expectedGuardianContact = storageGuardianContact; this.storageBrokerMock.Setup(broker => broker.InsertGuardianContactAsync(inputGuardianContact)) .ReturnsAsync(storageGuardianContact); // when GuardianContact actualGuardianContact = await this.guardianContactService.AddGuardianContactAsync(inputGuardianContact); // then actualGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(inputGuardianContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private static void ValidateGuardianContactIsNull(GuardianContact guardianContact) { if (guardianContact is null) { throw new NullGuardianContactException(); } }
public ValueTask <GuardianContact> AddGuardianContactAsync(GuardianContact guardianContact) => TryCatch(async() => { ValidateGuardianContactOnCreate(guardianContact); return(await this.storageBroker.InsertGuardianContactAsync(guardianContact)); });
private static void ValidateStorageGuardianContact (GuardianContact storageGuardianContact, Guid guardianId, Guid contactId) { if (storageGuardianContact == null) { throw new NotFoundGuardianContactException(guardianId, contactId); } }
public async ValueTask <GuardianContact> DeleteGuardianContactAsync( GuardianContact GuardianContact) { EntityEntry <GuardianContact> GuardianContactEntityEntry = this.GuardianContacts.Remove(GuardianContact); await this.SaveChangesAsync(); return(GuardianContactEntityEntry.Entity); }
public async ValueTask <GuardianContact> InsertGuardianContactAsync( GuardianContact GuardianContact) { EntityEntry <GuardianContact> GuardianContactEntityEntry = await this.GuardianContacts.AddAsync(GuardianContact); await this.SaveChangesAsync(); return(GuardianContactEntityEntry.Entity); }
public ValueTask <GuardianContact> RetrieveGuardianContactByIdAsync(Guid guardianId, Guid contactId) => TryCatch(async() => { ValidateGuardianContactIdIsNull(guardianId, contactId); GuardianContact storageGuardianContact = await this.storageBroker.SelectGuardianContactByIdAsync(guardianId, contactId); ValidateStorageGuardianContact(storageGuardianContact, guardianId, contactId); return(storageGuardianContact); });
public async ValueTask <GuardianContact> DeleteGuardianContactAsync( GuardianContact guardianContact) { using var broker = new StorageBroker(this.configuration); EntityEntry <GuardianContact> guardianContactEntityEntry = broker.GuardianContacts.Remove(entity: guardianContact); await broker.SaveChangesAsync(); return(guardianContactEntityEntry.Entity); }
private static void ValidateGuardianContactRequiredFields(GuardianContact guardianContact) { switch (guardianContact) { case { } when IsInvalid(guardianContact.GuardianId): throw new InvalidGuardianContactInputException( parameterName: nameof(GuardianContact.GuardianId), parameterValue: guardianContact.GuardianId); case { } when IsInvalid(guardianContact.ContactId): throw new InvalidGuardianContactInputException( parameterName: nameof(GuardianContact.ContactId), parameterValue: guardianContact.ContactId); } }
public async Task ShouldThrowValidationExceptionOnRemoveWhenStorageGuardianContactIsInvalidAndLogItAsync() { // given DateTimeOffset randomDateTime = GetRandomDateTime(); GuardianContact randomGuardianContact = CreateRandomGuardianContact(randomDateTime); Guid inputContactId = randomGuardianContact.ContactId; Guid inputGuardianId = randomGuardianContact.GuardianId; GuardianContact nullStorageGuardianContact = null; var notFoundGuardianContactException = new NotFoundGuardianContactException(inputGuardianId, inputContactId); var expectedSemesterCourseValidationException = new GuardianContactValidationException(notFoundGuardianContactException); this.storageBrokerMock.Setup(broker => broker.SelectGuardianContactByIdAsync(inputGuardianId, inputContactId)) .ReturnsAsync(nullStorageGuardianContact); // when ValueTask <GuardianContact> removeGuardianContactTask = this.guardianContactService.RemoveGuardianContactByIdAsync(inputGuardianId, inputContactId); // then await Assert.ThrowsAsync <GuardianContactValidationException>(() => removeGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectGuardianContactByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteGuardianContactAsync(It.IsAny <GuardianContact>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldPostGuardianContactAsync() { // given GuardianContact randomGuardianContact = await CreateRandomGuardianContactAsync(); GuardianContact inputGuardianContact = randomGuardianContact; GuardianContact expectedGuardianContact = inputGuardianContact; // when await this.otripleSApiBroker.PostGuardianContactAsync(inputGuardianContact); GuardianContact actualGuardianContact = await this.otripleSApiBroker.GetGuardianContactByIdAsync( inputGuardianContact.GuardianId, inputGuardianContact.ContactId); // then actualGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); await DeleteGuardianContactAsync(actualGuardianContact); }
public async Task ShouldRemoveGuardianContactAsync() { // given var randomGuardianId = Guid.NewGuid(); var randomContactId = Guid.NewGuid(); Guid inputGuardianId = randomGuardianId; Guid inputContactId = randomContactId; DateTimeOffset inputDateTime = GetRandomDateTime(); GuardianContact randomGuardianContact = CreateRandomGuardianContact(inputDateTime); randomGuardianContact.GuardianId = inputGuardianId; randomGuardianContact.ContactId = inputContactId; GuardianContact storageGuardianContact = randomGuardianContact; GuardianContact expectedGuardianContact = storageGuardianContact; this.storageBrokerMock.Setup(broker => broker.SelectGuardianContactByIdAsync(inputGuardianId, inputContactId)) .ReturnsAsync(storageGuardianContact); this.storageBrokerMock.Setup(broker => broker.DeleteGuardianContactAsync(storageGuardianContact)) .ReturnsAsync(expectedGuardianContact); // when GuardianContact actualGuardianContact = await this.guardianContactService.RemoveGuardianContactByIdAsync(inputGuardianId, inputContactId); // then actualGuardianContact.Should().BeEquivalentTo(expectedGuardianContact); this.storageBrokerMock.Verify(broker => broker.SelectGuardianContactByIdAsync(inputGuardianId, inputContactId), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteGuardianContactAsync(storageGuardianContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenReferneceExceptionAndLogItAsync() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact invalidGuardianContact = randomGuardianContact; string randomMessage = GetRandomMessage(); string exceptionMessage = randomMessage; var foreignKeyConstraintConflictException = new ForeignKeyConstraintConflictException(exceptionMessage); var invalidGuardianContactReferenceException = new InvalidGuardianContactReferenceException(foreignKeyConstraintConflictException); var expectedGuardianContactValidationException = new GuardianContactValidationException(invalidGuardianContactReferenceException); this.storageBrokerMock.Setup(broker => broker.InsertGuardianContactAsync(invalidGuardianContact)) .ThrowsAsync(foreignKeyConstraintConflictException); // when ValueTask <GuardianContact> addGuardianContactTask = this.guardianContactService.AddGuardianContactAsync(invalidGuardianContact); // then await Assert.ThrowsAsync <GuardianContactValidationException>(() => addGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(invalidGuardianContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenGuardianContactAlreadyExistsAndLogItAsync() { // given GuardianContact randomGuardianContact = CreateRandomGuardianContact(); GuardianContact alreadyExistsGuardianContact = randomGuardianContact; string randomMessage = GetRandomMessage(); string exceptionMessage = randomMessage; var duplicateKeyException = new DuplicateKeyException(exceptionMessage); var alreadyExistsGuardianContactException = new AlreadyExistsGuardianContactException(duplicateKeyException); var expectedGuardianContactValidationException = new GuardianContactValidationException(alreadyExistsGuardianContactException); this.storageBrokerMock.Setup(broker => broker.InsertGuardianContactAsync(alreadyExistsGuardianContact)) .ThrowsAsync(duplicateKeyException); // when ValueTask <GuardianContact> addGuardianContactTask = this.guardianContactService.AddGuardianContactAsync(alreadyExistsGuardianContact); // then await Assert.ThrowsAsync <GuardianContactValidationException>(() => addGuardianContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianContactAsync(alreadyExistsGuardianContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async ValueTask <GuardianContact> PostGuardianContactAsync(GuardianContact guardian) => await this.apiFactoryClient.PostContentAsync(GuardianContactsRelativeUrl, guardian);
private static void ValidateGuardianContactOnCreate(GuardianContact guardianContact) { ValidateGuardianContactIsNull(guardianContact); ValidateGuardianContactRequiredFields(guardianContact); }