public void ExportNewONetMappingsTest(string cMSSOCCode, string cMSOnetCode, bool expectToInsertNewSOCs, int numberAuditMatches)
        {
            // Arrange
            var skillsImportService = new SkillsFrameworkDataImportService(fakeSkillsFrameworkService, fakeFrameworkSkillRepository, fakeJobProfileSocCodeRepository, fakeJobProfileRepository, fakeSocSkillMatrixRepository, fakeReportAuditRepository);

            A.CallTo(() => fakeSkillsFrameworkService.AddNewSOCMappings(A <List <SocCode> > ._)).DoesNothing();

            var SocCodesFromOnet = new List <SocCode>
            {
                new SocCode {
                    SOCCode = "ExistingSOC", ONetOccupationalCode = "TestONetCode"
                }
            };

            A.CallTo(() => fakeSkillsFrameworkService.GetAllSocMappings()).Returns(SocCodesFromOnet);

            var SocCodesFromCMS = new List <SocCode>
            {
                new SocCode {
                    SOCCode = cMSSOCCode, ONetOccupationalCode = cMSOnetCode
                }
            };

            A.CallTo(() => fakeJobProfileSocCodeRepository.GetSocCodes()).Returns(SocCodesFromCMS.AsQueryable());

            A.CallTo(() => fakeSkillsFrameworkService.AddNewSOCMappings(A <IEnumerable <SocCode> > ._)).DoesNothing();

            // Act
            skillsImportService.ExportNewONetMappings();

            //Asserts
            if (expectToInsertNewSOCs)
            {
                A.CallTo(() => fakeSkillsFrameworkService.AddNewSOCMappings(A <IEnumerable <SocCode> > ._)).MustHaveHappenedOnceExactly();
            }
            else
            {
                A.CallTo(() => fakeSkillsFrameworkService.AddNewSOCMappings(A <IEnumerable <SocCode> > ._)).MustNotHaveHappened();
            }

            A.CallTo(() => fakeReportAuditRepository.CreateAudit("SummaryDetails", A <string> ._)).MustHaveHappened(numberAuditMatches, Times.Exactly);
        }
        public UpdateSocOccupationalCodeResponse ExportNewONetMappings()
        {
            var allSocCodes = jobProfileSocCodeRepository.GetSocCodes().ToList();
            var occupationalCodeMappings = skillsFrameworkService.GetAllSocMappings();

            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Found {allSocCodes.Count} SOCs in the Sitefinity ");
            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Found {occupationalCodeMappings.Count()} socOccupation Code Mappings from Framework Service");

            var newSOCS = allSocCodes.Where(s => !occupationalCodeMappings.Any(o => o.SOCCode == s.SOCCode)).Where(n => !string.IsNullOrEmpty(n.ONetOccupationalCode));

            reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Found {newSOCS.Count()} SOCs with ONet mappings that are not already in the ONet Framework Service");

            if (newSOCS.Count() > 0)
            {
                skillsFrameworkService.AddNewSOCMappings(newSOCS);
                reportAuditRepository.CreateAudit(SummaryDetailsKey, $"Added new SOCs to the ONet Framework Service");
            }

            return(new UpdateSocOccupationalCodeResponse {
                Success = true
            });
        }