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);
        }
示例#4
0
        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);
        }
示例#6
0
        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);
        }
示例#9
0
        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();
        }