public async Task LmiSocImportServiceImportReturnsSuccess() { // arrange var socJobProfileMapping = new SocJobProfileMappingModel { Soc = 3231, JobProfiles = A.CollectionOfDummy <SocJobProfileItemModel>(2).ToList(), }; var dummyLmiPredictedModel = A.Dummy <LmiPredictedModel>(); dummyLmiPredictedModel.PredictedEmployment = A.CollectionOfDummy <LmiPredictedYearModel>(2).ToList(); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiSocDatasetModel>(A <Uri> .Ignored)).Returns(A.Dummy <LmiSocDatasetModel>()); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiPredictedModel>(A <Uri> .Ignored)).Returns(dummyLmiPredictedModel); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiBreakdownModel>(A <Uri> .Ignored)).Returns(A.Dummy <LmiBreakdownModel>()); // act var result = await lmiSocImportService.ImportAsync(socJobProfileMapping.Soc.Value, socJobProfileMapping.JobProfiles).ConfigureAwait(false); // assert A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiSocDatasetModel>(A <Uri> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiPredictedModel>(A <Uri> .Ignored)).MustHaveHappened(2, Times.Exactly); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiBreakdownModel>(A <Uri> .Ignored)).MustHaveHappened(3, Times.Exactly); Assert.NotNull(result); Assert.NotNull(result !.JobProfiles); Assert.NotNull(result.JobGrowth); Assert.NotNull(result.QualificationLevel); Assert.NotNull(result.EmploymentByRegion); Assert.NotNull(result.TopIndustriesInJobGroup); }
public async Task <HttpStatusCode> GraphRefreshSocOrchestrator([OrchestrationTrigger] IDurableOrchestrationContext context) { _ = context ?? throw new ArgumentNullException(nameof(context)); var socRequest = context.GetInput <SocRequestModel>(); if (socJobProfilesMappingsCachedModel.SocJobProfileMappings == null || !socJobProfilesMappingsCachedModel.SocJobProfileMappings.Any()) { socJobProfilesMappingsCachedModel.SocJobProfileMappings = await context.CallActivityAsync <IList <SocJobProfileMappingModel>?>(nameof(GetJobProfileSocMappingsActivity), null).ConfigureAwait(true); } var socJobProfileMapping = new SocJobProfileMappingModel { Soc = socRequest.Soc, JobProfiles = socJobProfilesMappingsCachedModel.SocJobProfileMappings.FirstOrDefault(f => f.Soc == socRequest.Soc)?.JobProfiles }; await context.CallActivityAsync(nameof(GraphPurgeSocActivity), socRequest.Soc).ConfigureAwait(true); var eventGridPostPurgeRequest = new EventGridPostRequestModel { ItemId = socRequest.SocId, Api = $"{eventGridClientOptions.ApiEndpoint}/{socRequest.SocId}", DisplayText = $"LMI SOC purged: {socRequest.Soc}", EventType = socRequest.IsDraftEnvironment ? EventTypeForDraftDiscarded : EventTypeForDeleted, }; await context.CallActivityAsync(nameof(PostGraphEventActivity), eventGridPostPurgeRequest).ConfigureAwait(true); var itemId = await context.CallActivityAsync <Guid?>(nameof(ImportSocItemActivity), socJobProfileMapping).ConfigureAwait(true); if (itemId != null) { var eventGridPostRequest = new EventGridPostRequestModel { ItemId = itemId, Api = $"{eventGridClientOptions.ApiEndpoint}/{itemId}", DisplayText = $"LMI SOC refreshed: {socRequest.Soc}", EventType = socRequest.IsDraftEnvironment ? EventTypeForDraft : EventTypeForPublished, }; await context.CallActivityAsync(nameof(PostGraphEventActivity), eventGridPostRequest).ConfigureAwait(true); return(HttpStatusCode.OK); } return(HttpStatusCode.NoContent); }
public async Task LmiImportOrchestrationTriggerImportSocItemActivityReturnsNullItemId() { // Arrange LmiSocDatasetModel?nullLmiSocDatasetModel = null; var socJobProfileMapping = new SocJobProfileMappingModel { Soc = 1234 }; A.CallTo(() => fakeLmiSocImportService.ImportAsync(A <int> .Ignored, A <List <SocJobProfileItemModel> > .Ignored)).Returns(nullLmiSocDatasetModel); // Act var result = await lmiImportOrchestrationTrigger.ImportSocItemActivity(socJobProfileMapping).ConfigureAwait(false); // Assert A.CallTo(() => fakeLmiSocImportService.ImportAsync(A <int> .Ignored, A <List <SocJobProfileItemModel> > .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeMapLmiToGraphService.Map(A <LmiSocDatasetModel> .Ignored)).MustNotHaveHappened(); A.CallTo(() => fakeGraphService.ImportAsync(A <GraphSocDatasetModel> .Ignored, A <GraphReplicaSet> .Ignored)).MustNotHaveHappened(); Assert.Null(result); }
public async Task <Guid?> ImportSocItemActivity([ActivityTrigger] SocJobProfileMappingModel socJobProfileMapping) { _ = socJobProfileMapping ?? throw new ArgumentNullException(nameof(socJobProfileMapping)); logger.LogInformation($"Importing SOC: {socJobProfileMapping.Soc}"); var lmiSocDataset = await lmiSocImportService.ImportAsync(socJobProfileMapping.Soc !.Value, socJobProfileMapping.JobProfiles).ConfigureAwait(false); if (lmiSocDataset != null) { var graphSocDataset = mapLmiToGraphService.Map(lmiSocDataset); if (await graphService.ImportAsync(graphSocDataset).ConfigureAwait(false)) { return(graphSocDataset !.ItemId); } } return(null); }
public async Task LmiSocImportServiceImportReturnsnullWhenNoData() { // arrange var socJobProfileMapping = new SocJobProfileMappingModel { Soc = 3231, JobProfiles = A.CollectionOfDummy <SocJobProfileItemModel>(2).ToList(), }; LmiSocDatasetModel?nullLmiSocDatasetModel = null; A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiSocDatasetModel>(A <Uri> .Ignored)).Returns(nullLmiSocDatasetModel); // act var result = await lmiSocImportService.ImportAsync(socJobProfileMapping.Soc.Value, socJobProfileMapping.JobProfiles).ConfigureAwait(false); // assert A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiSocDatasetModel>(A <Uri> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiPredictedModel>(A <Uri> .Ignored)).MustNotHaveHappened(); A.CallTo(() => fakeLmiApiConnector.ImportAsync <LmiBreakdownModel>(A <Uri> .Ignored)).MustNotHaveHappened(); Assert.Null(result); }
public async Task LmiImportOrchestrationTriggerImportSocItemActivityIsSuccessful() { // Arrange var dummyLmiSocDatasetModel = A.Dummy <LmiSocDatasetModel>(); var dummyGraphSocDatasetModel = A.Dummy <GraphSocDatasetModel>(); var socJobProfileMapping = new SocJobProfileMappingModel { Soc = 1234 }; A.CallTo(() => fakeLmiSocImportService.ImportAsync(A <int> .Ignored, A <List <SocJobProfileItemModel> > .Ignored)).Returns(dummyLmiSocDatasetModel); A.CallTo(() => fakeMapLmiToGraphService.Map(A <LmiSocDatasetModel> .Ignored)).Returns(dummyGraphSocDatasetModel); A.CallTo(() => fakeGraphService.ImportAsync(A <GraphSocDatasetModel> .Ignored)).Returns(true); // Act var result = await lmiImportOrchestrationTrigger.ImportSocItemActivity(socJobProfileMapping).ConfigureAwait(false); // Assert A.CallTo(() => fakeLmiSocImportService.ImportAsync(A <int> .Ignored, A <List <SocJobProfileItemModel> > .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeMapLmiToGraphService.Map(A <LmiSocDatasetModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeGraphService.ImportAsync(A <GraphSocDatasetModel> .Ignored)).MustHaveHappenedOnceExactly(); Assert.NotNull(result); }