public async Task PatchSkillsMatrixReturnsArgumentNullExceptionWhenModelIsNull() { // Arrange var segmentService = new SkillSegmentService(repository, mapper, jobProfileSegmentRefreshService); // Act await Assert.ThrowsAsync <ArgumentNullException>(async() => await segmentService.PatchSkillsMatrixAsync(null, Guid.NewGuid()).ConfigureAwait(false)).ConfigureAwait(false); }
public async Task PatchSkillsMatrixReturnsNotFoundWhenDataDoesNotExist() { // Arrange var fakeRepository = A.Fake <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).Returns((JobProfileSkillSegmentModel)null); var segmentService = new SkillSegmentService(fakeRepository, mapper, jobProfileSegmentRefreshService); // Act var result = await segmentService.PatchSkillsMatrixAsync(GetPatchContextualisedModel(), defaultJobProfileId).ConfigureAwait(false); // Assert A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal(HttpStatusCode.NotFound, result); }
public async Task PatchSkillsMatrixReturnsAlreadyReportedWhenExistingSequenceNumberIsHigher() { // Arrange var existingModel = GetJobProfileSkillSegmentModel(999); var fakeRepository = A.Fake <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).Returns(existingModel); var segmentService = new SkillSegmentService(fakeRepository, mapper, jobProfileSegmentRefreshService); // Act var result = await segmentService.PatchSkillsMatrixAsync(GetPatchContextualisedModel(), defaultJobProfileId).ConfigureAwait(false); // Assert A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal(HttpStatusCode.AlreadyReported, result); }
public async Task PingReturnsFalseWhenNotInRepository() { // arrange const bool expectedResult = false; var repository = A.Dummy <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => repository.PingAsync()).Returns(expectedResult); var skillSegmentService = new SkillSegmentService(repository, mapper, jobProfileSegmentRefreshService); // act var result = await skillSegmentService.PingAsync().ConfigureAwait(false); // assert A.CallTo(() => repository.PingAsync()).MustHaveHappenedOnceExactly(); Assert.Equal(expectedResult, result); }
public async Task PatchSkillsMatrixReturnsAlreadyReportedWhenMessageActionIsDeletedAndDataDoesNotExist() { // Arrange var existingModel = GetJobProfileSkillSegmentModel(); var patchModel = GetPatchContextualisedModel(MessageAction.Deleted, Guid.NewGuid()); var fakeRepository = A.Fake <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).Returns(existingModel); var segmentService = new SkillSegmentService(fakeRepository, mapper, jobProfileSegmentRefreshService); // Act var result = await segmentService.PatchSkillsMatrixAsync(patchModel, defaultJobProfileId).ConfigureAwait(false); // Assert A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal(HttpStatusCode.AlreadyReported, result); }
public async Task ReturnsServiceUnavailableWhenException() { // Arrange var controller = BuildHealthController(MediaTypeNames.Application.Json); A.CallTo(() => SkillSegmentService.PingAsync()).Throws <Exception>(); // Act var result = await controller.Health().ConfigureAwait(false); // Assert A.CallTo(() => SkillSegmentService.PingAsync()).MustHaveHappenedOnceExactly(); var statusResult = Assert.IsType <StatusCodeResult>(result); statusResult.StatusCode.Should().Be((int)HttpStatusCode.ServiceUnavailable); controller.Dispose(); }
public async Task PatchDigitalSkillReturnsSuccess() { // Arrange var model = GetPatchDigitalSkillModel(); var existingModel = GetJobProfileSkillSegmentModel(); var fakeRepository = A.Fake <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).Returns(existingModel); A.CallTo(() => fakeRepository.UpsertAsync(A <JobProfileSkillSegmentModel> .Ignored)).Returns(HttpStatusCode.OK); // Act var segmentService = new SkillSegmentService(fakeRepository, mapper, jobProfileSegmentRefreshService); var result = await segmentService.PatchDigitalSkillAsync(model, jobProfileId).ConfigureAwait(false); // Assert A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeRepository.UpsertAsync(A <JobProfileSkillSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => jobProfileSegmentRefreshService.SendMessageAsync(A <RefreshJobProfileSegmentServiceBusModel> .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal(HttpStatusCode.OK, result); }
public async Task PatchSkillsMatrixReturnsSuccessWhenMessageActionIsDeleted() { // Arrange var model = GetPatchContextualisedModel(MessageAction.Deleted); var existingModel = GetJobProfileSkillSegmentModel(); var fakeRepository = A.Fake <ICosmosRepository <JobProfileSkillSegmentModel> >(); A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).Returns(existingModel); A.CallTo(() => fakeRepository.UpsertAsync(A <JobProfileSkillSegmentModel> .Ignored)).Returns(HttpStatusCode.OK); var segmentService = new SkillSegmentService(fakeRepository, mapper, jobProfileSegmentRefreshService); // Act var result = await segmentService.PatchSkillsMatrixAsync(model, defaultJobProfileId).ConfigureAwait(false); // Assert A.CallTo(() => fakeRepository.GetAsync(A <Expression <Func <JobProfileSkillSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeRepository.UpsertAsync(A <JobProfileSkillSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => jobProfileSegmentRefreshService.SendMessageAsync(A <RefreshJobProfileSegmentServiceBusModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <Skills>(A <PatchContextualisedModel> .Ignored)).MustNotHaveHappened(); Assert.Equal(HttpStatusCode.OK, result); }
public async Task ReturnsSuccessWhenhealthy() { // Arrange var expectedResult = true; var controller = BuildHealthController(MediaTypeNames.Application.Json); A.CallTo(() => SkillSegmentService.PingAsync()).Returns(expectedResult); // Act var result = await controller.Health().ConfigureAwait(false); // Assert A.CallTo(() => SkillSegmentService.PingAsync()).MustHaveHappenedOnceExactly(); var jsonResult = Assert.IsType <OkObjectResult>(result); var model = Assert.IsAssignableFrom <HealthViewModel>(jsonResult.Value); jsonResult.StatusCode.Should().Be((int)HttpStatusCode.OK); model.HealthItems.Count.Should().BeGreaterThan(0); model.HealthItems.First().Service.Should().NotBeNullOrWhiteSpace(); model.HealthItems.First().Message.Should().NotBeNullOrWhiteSpace(); controller.Dispose(); }