public async Task <FullDeltaReportModel> GetAllAsync()
        {
            logger.LogInformation("Loading SOC delta");

            var fullDeltaReportModel = new FullDeltaReportModel {
                Id = Guid.NewGuid()
            };
            var draftSummaries = await draftJobGroupApiConnector.GetSummaryAsync().ConfigureAwait(false) ?? new List <JobGroupSummaryItemModel>();

            var publishedSummaries = await publishedJobGroupApiConnector.GetSummaryAsync().ConfigureAwait(false) ?? new List <JobGroupSummaryItemModel>();

            var draftSocs     = (from a in draftSummaries select a.Soc).ToList();
            var publishedSocs = (from a in publishedSummaries select a.Soc).ToList();
            var allSocs       = draftSocs.Union(publishedSocs).Distinct().ToList();

            fullDeltaReportModel.DeltaReportSocs = (from soc in allSocs select new DeltaReportSocModel {
                Soc = soc,
            }).ToList();

            foreach (var deltaReportSocModel in fullDeltaReportModel.DeltaReportSocs)
            {
                deltaReportSocModel.DraftJobGroup = await draftJobGroupApiConnector.GetDetailAsync(deltaReportSocModel.Soc).ConfigureAwait(false);

                deltaReportSocModel.PublishedJobGroup = await publishedJobGroupApiConnector.GetDetailAsync(deltaReportSocModel.Soc).ConfigureAwait(false);
            }

            SetState(fullDeltaReportModel.Id.Value, fullDeltaReportModel.DeltaReportSocs);

            return(fullDeltaReportModel);
        }
        public async Task <FullDeltaReportModel?> GetSocAsync(Guid?socId)
        {
            _ = socId ?? throw new ArgumentNullException(nameof(socId));

            logger.LogInformation($"Loading individual SOC data for: {socId}");

            var deltaReportSocModel = new DeltaReportSocModel
            {
                DraftJobGroup = await draftJobGroupApiConnector.GetDetailAsync(socId.Value).ConfigureAwait(false),
            };

            if (deltaReportSocModel.DraftJobGroup == null)
            {
                logger.LogInformation($"Failed to load individual draft SOC for: {socId}");
                return(null);
            }

            deltaReportSocModel.PublishedJobGroup = await publishedJobGroupApiConnector.GetDetailAsync(deltaReportSocModel.DraftJobGroup.Soc).ConfigureAwait(false);

            deltaReportSocModel.Soc = deltaReportSocModel.DraftJobGroup.Soc;

            var fullDeltaReportModel = new FullDeltaReportModel
            {
                Id = Guid.NewGuid(),
                DeltaReportSocs = new List <DeltaReportSocModel> {
                    deltaReportSocModel
                },
            };

            SetState(fullDeltaReportModel.Id.Value, fullDeltaReportModel.DeltaReportSocs);

            return(fullDeltaReportModel);
        }
Beispiel #3
0
        public JobGroupDataServiceTests()
        {
            jobGroupDataService = new JobGroupDataService(fakeLogger, fakeDraftJobGroupApiConnector, fakePublishedJobGroupApiConnector);

            draftJobGroupSummaryItemModels = new List <JobGroupSummaryItemModel>
            {
                new JobGroupSummaryItemModel
                {
                    Soc = Soc1111,
                },
                new JobGroupSummaryItemModel
                {
                    Soc = Soc2222,
                },
            };
            publishedJobGroupSummaryItemModels = new List <JobGroupSummaryItemModel>
            {
                new JobGroupSummaryItemModel
                {
                    Soc = Soc2222,
                },
                new JobGroupSummaryItemModel
                {
                    Soc = Soc3333,
                },
            };
            dummyDraftJobGroupModel01 = new JobGroupModel
            {
                Soc = Soc1111,
            };
            dummyDraftJobGroupModel02 = new JobGroupModel
            {
                Soc = Soc2222,
            };
            dummyPublishedJobGroupModel02 = new JobGroupModel
            {
                Soc = Soc2222,
            };
            dummyPublishedJobGroupModel03 = new JobGroupModel
            {
                Soc = Soc3333,
            };
            dummyDraftJobGroupModels     = new[] { dummyDraftJobGroupModel01, dummyDraftJobGroupModel02 };
            dummyPublishedJobGroupModels = new[] { dummyPublishedJobGroupModel02, dummyPublishedJobGroupModel03 };
            expectedGetAllResult         = new FullDeltaReportModel
            {
                DeltaReportSocs = new List <DeltaReportSocModel>
                {
                    new DeltaReportSocModel
                    {
                        Soc               = Soc1111,
                        DraftJobGroup     = dummyDraftJobGroupModel01,
                        PublishedJobGroup = null,
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = Soc2222,
                        DraftJobGroup     = dummyDraftJobGroupModel02,
                        PublishedJobGroup = dummyPublishedJobGroupModel02,
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = Soc3333,
                        DraftJobGroup     = null,
                        PublishedJobGroup = dummyPublishedJobGroupModel03,
                    },
                },
            };
            expectedGetSocResult = new FullDeltaReportModel
            {
                DeltaReportSocs = new List <DeltaReportSocModel>
                {
                    new DeltaReportSocModel
                    {
                        Soc               = Soc2222,
                        DraftJobGroup     = dummyDraftJobGroupModel02,
                        PublishedJobGroup = dummyPublishedJobGroupModel02,
                    },
                },
            };
        }
Beispiel #4
0
        public void SocDeltaServiceTestsDetermineDeltaIsSuccessful()
        {
            // Arrange
            const int expectedSocAdditionCount = 3;
            const int expectedSocUpdateCount   = 1;
            const int expectedSocDeletionCount = 2;
            var       fullDeltaReportModel     = new FullDeltaReportModel
            {
                DeltaReportSocs = new List <DeltaReportSocModel>
                {
                    new DeltaReportSocModel
                    {
                        Soc               = 1234,
                        State             = DeltaReportState.Updated,
                        PublishedJobGroup = new JobGroupModel(),
                        DraftJobGroup     = new JobGroupModel(),
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 1111,
                        State             = DeltaReportState.Addition,
                        PublishedJobGroup = null,
                        DraftJobGroup     = new JobGroupModel(),
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 1112,
                        State             = DeltaReportState.Addition,
                        PublishedJobGroup = null,
                        DraftJobGroup     = new JobGroupModel(),
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 1113,
                        State             = DeltaReportState.Addition,
                        PublishedJobGroup = null,
                        DraftJobGroup     = new JobGroupModel(),
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 2221,
                        State             = DeltaReportState.Unchanged,
                        PublishedJobGroup = new JobGroupModel(),
                        DraftJobGroup     = new JobGroupModel(),
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 3331,
                        State             = DeltaReportState.Deletion,
                        PublishedJobGroup = new JobGroupModel(),
                        DraftJobGroup     = null,
                    },
                    new DeltaReportSocModel
                    {
                        Soc               = 3332,
                        State             = DeltaReportState.Deletion,
                        PublishedJobGroup = new JobGroupModel(),
                        DraftJobGroup     = null,
                    },
                },
            };
            var publishedJobGroupToDeltaModel = new JobGroupToDeltaModel
            {
                Description = "this is the published description",
            };
            var draftJobGroupToDelta = new JobGroupToDeltaModel
            {
                Description = "this is the draft description",
            };

            A.CallTo(() => fakeMapper.Map <JobGroupToDeltaModel>(fullDeltaReportModel.DeltaReportSocs.First().PublishedJobGroup)).Returns(publishedJobGroupToDeltaModel);
            A.CallTo(() => fakeMapper.Map <JobGroupToDeltaModel>(fullDeltaReportModel.DeltaReportSocs.First().DraftJobGroup)).Returns(draftJobGroupToDelta);

            // Act
            socDeltaService.DetermineDelta(fullDeltaReportModel);

            // Assert
            A.CallTo(() => fakeMapper.Map <JobGroupToDeltaModel>(fullDeltaReportModel.DeltaReportSocs.First().PublishedJobGroup)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeMapper.Map <JobGroupToDeltaModel>(fullDeltaReportModel.DeltaReportSocs.First().DraftJobGroup)).MustHaveHappenedOnceExactly();
            Assert.Equal(fullDeltaReportModel.DeltaReportSocs.Count, fullDeltaReportModel.SocImportedCount);
            Assert.Equal(expectedSocAdditionCount, fullDeltaReportModel.SocAdditionCount);
            Assert.Equal(expectedSocUpdateCount, fullDeltaReportModel.SocUpdateCount);
            Assert.Equal(expectedSocDeletionCount, fullDeltaReportModel.SocDeletionCount);
        }