public async Task <HttpStatusCode> TransformItemActivity([ActivityTrigger] Uri uri)
        {
            logger.LogInformation($"Loading SOC dataset item: {uri}");
            var lmiSoc = await lmiImportApiConnector.GetDetailAsync(uri).ConfigureAwait(false);

            if (lmiSoc != null)
            {
                lmiSoc.QualificationLevel.SetMeasures();
                lmiSoc.EmploymentByRegion.SetMeasures();
                lmiSoc.TopIndustriesInJobGroup.SetMeasures();

                logger.LogInformation($"Transforming SOC dataset item for {uri} to cache");
                var jobGroup = mapper.Map <JobGroupModel>(lmiSoc);

                if (jobGroup != null)
                {
                    var existingJobGroup = await jobGroupDocumentService.GetAsync(w => w.Soc == jobGroup.Soc, jobGroup.Soc.ToString(CultureInfo.InvariantCulture)).ConfigureAwait(false);

                    if (existingJobGroup != null)
                    {
                        jobGroup.Etag = existingJobGroup.Etag;
                    }

                    logger.LogInformation($"Upserting SOC datasets item: {jobGroup.Soc}");
                    return(await jobGroupDocumentService.UpsertAsync(jobGroup).ConfigureAwait(false));
                }
            }

            return(HttpStatusCode.BadRequest);
        }
Esempio n. 2
0
        public async Task LmiApiConnectorGetDetailReturnsSuccess()
        {
            // arrange
            var expectedResult = new SocDatasetModel
            {
                Id  = Guid.NewGuid(),
                Soc = 1234,
            };

            A.CallTo(() => fakeApiDataConnector.GetAsync <SocDatasetModel>(A <HttpClient> .Ignored, A <Uri> .Ignored)).Returns(expectedResult);

            // act
            var result = await lmiImportApiConnector.GetDetailAsync(new Uri("https://somewhere.com", UriKind.Absolute)).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeApiDataConnector.GetAsync <SocDatasetModel>(A <HttpClient> .Ignored, A <Uri> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.NotNull(result);
            Assert.Equal(expectedResult.Id, result !.Id);
            Assert.Equal(expectedResult.Soc, result.Soc);
        }
Esempio n. 3
0
        public async Task LmiOrchestrationTriggerTransformItemAsyncIsSuccessful()
        {
            // Arrange
            const HttpStatusCode expectedResult = HttpStatusCode.OK;
            var dummySocDatasetModel            = A.Dummy <SocDatasetModel>();
            var dummyJobgroup = A.Dummy <JobGroupModel>();

            A.CallTo(() => fakeLmiImportApiConnector.GetDetailAsync(A <Uri> .Ignored)).Returns(dummySocDatasetModel);
            A.CallTo(() => fakeMapper.Map <JobGroupModel>(A <SocDatasetModel> .Ignored)).Returns(dummyJobgroup);
            A.CallTo(() => fakeJobGroupDocumentService.GetAsync(A <Expression <Func <JobGroupModel, bool> > > .Ignored, A <string> .Ignored)).Returns(dummyJobgroup);
            A.CallTo(() => fakeJobGroupDocumentService.UpsertAsync(A <JobGroupModel> .Ignored)).Returns(expectedResult);

            // Act
            var result = await lmiOrchestrationTrigger.TransformItemActivity(new Uri("https://somewhere.com", UriKind.Absolute)).ConfigureAwait(false);

            // Assert
            A.CallTo(() => fakeLmiImportApiConnector.GetDetailAsync(A <Uri> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeMapper.Map <JobGroupModel>(A <SocDatasetModel> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeJobGroupDocumentService.GetAsync(A <Expression <Func <JobGroupModel, bool> > > .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeJobGroupDocumentService.UpsertAsync(A <JobGroupModel> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResult, result);
        }