public void UpsertSocSkillMatrixTest(bool skillAvailable) { //Arrange var dummySocSkill = new SocSkillMatrix { Title = "title test", SocCode = nameof(SocSkillMatrix.SocCode), Skill = nameof(SocSkillMatrix.Skill) }; var dummyDynamicContent = A.Dummy <DynamicContent>(); // Dummies and fakes SetupRepositoryCalls(dummyDynamicContent, skillAvailable); var socSkillMatrixRepository = new SocSkillMatrixRepository(fakeFrameworkSkillRepository, fakeSocMatrixRepository, fakeDynamicContentExtensions, fakeSocCodeRepository, fakeSocSkillConverter); // Act socSkillMatrixRepository.UpsertSocSkillMatrix(dummySocSkill); // Assert if (!skillAvailable) { A.CallTo(() => fakeSocMatrixRepository.Create()).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeSocMatrixRepository.Add(dummyDynamicContent)).MustHaveHappenedOnceExactly(); } else { A.CallTo(() => fakeSocMatrixRepository.GetMaster(dummyDynamicContent)) .MustHaveHappenedOnceExactly(); A.CallTo(() => fakeSocMatrixRepository.GetTemp(dummyDynamicContent)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeSocMatrixRepository.CheckinTemp(dummyDynamicContent)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeSocMatrixRepository.Publish(dummyDynamicContent, A <string> ._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDynamicContentExtensions.SetRelatedFieldValue(dummyDynamicContent, dummyDynamicContent, A <string> ._, A <float> ._)).MustHaveHappened(2, Times.OrLess); A.CallTo(() => fakeDynamicContentExtensions.DeleteRelatedFieldValues(dummyDynamicContent, A <string> ._)) .MustHaveHappened(2, Times.OrLess); A.CallTo(() => fakeDynamicContentExtensions.SetFieldValue(dummyDynamicContent, A <string> ._, A <string> ._)) .MustHaveHappened(); A.CallTo(() => fakeDynamicContentExtensions.SetFieldValue(dummyDynamicContent, A <string> ._, A <decimal?> ._)) .MustHaveHappened(2, Times.Exactly); A.CallTo(() => fakeSocCodeRepository.Get(A <Expression <Func <DynamicContent, bool> > > .That.Matches(m => LinqExpressionsTestHelper.IsExpressionEqual(m, d => d.Status == ContentLifecycleStatus.Master && d.GetValue <string>(nameof(SocCode.SOCCode)) == dummySocSkill.SocCode)))) .MustHaveHappened(); A.CallTo(() => fakeSocMatrixRepository.Get(A <Expression <Func <DynamicContent, bool> > > .That.Matches(m => LinqExpressionsTestHelper.IsExpressionEqual(m, item => item.Visible && item.Status == ContentLifecycleStatus.Live && item.UrlName == dummySocSkill.SfUrlName)))).MustHaveHappened(); A.CallTo(() => fakeSocMatrixRepository.Commit()).MustHaveHappened(); } }
public IList <SocSkillMatrix> CreateSocSkillsMatrixRecords(SocCode soc) { if (soc == null) { throw new ArgumentNullException(nameof(soc)); } var occupationSkills = skillsFrameworkService.GetRelatedSkillMapping(soc.ONetOccupationalCode); //Create SOC skill matrix records reportAuditRepository.CreateAudit(ActionDetailsKey, $"Found {occupationSkills.Count()} Skills for {soc.ONetOccupationalCode} SOC {soc.SOCCode} from SkillFramework Service"); //Save it as an error as well if (occupationSkills.Count() == 0) { reportAuditRepository.CreateAudit(ErrorDetailsKey, $"Found {occupationSkills.Count()} Skills for {soc.ONetOccupationalCode} SOC {soc.SOCCode} from SkillFramework Service"); } var rankGenerated = 1; var socSkillMatrixData = new List <SocSkillMatrix>(); foreach (var occupationSkill in occupationSkills) { var socSkillToAdd = new SocSkillMatrix { Title = $"{soc.SOCCode}-{occupationSkill.Name}", SocCode = soc.SOCCode, Skill = occupationSkill.Name, ONetRank = occupationSkill.Score, Rank = rankGenerated, ONetElementId = occupationSkill.Id, ONetAttributeType = occupationSkill.Category.ToString() }; socSkillMatrixRepository.UpsertSocSkillMatrix(socSkillToAdd); socSkillMatrixData.Add(socSkillToAdd); reportAuditRepository.CreateAudit(ActionDetailsKey, $"Added/Updated Soc Skill Matrix profile {socSkillToAdd.Title} into socskill matrix repo"); rankGenerated++; } return(socSkillMatrixData); }
public void UpsertSocSkillMatrix(SocSkillMatrix socSkillMatrix) { var repoSocMatrix = socMatrixRepository.Get(item => item.Visible && item.Status == ContentLifecycleStatus.Live && item.UrlName == socSkillMatrix.SfUrlName); if (repoSocMatrix != null) { var master = socMatrixRepository.GetMaster(repoSocMatrix); if (!string.IsNullOrWhiteSpace(socSkillMatrix.ONetElementId)) { dynamicContentExtensions.DeleteRelatedFieldValues(master, RelatedSkillField); var relatedSkillItem = frameworkSkillRepository.Get(d => d.Status == ContentLifecycleStatus.Master && d.GetValue <string>(nameof(FrameworkSkill.ONetElementId)) == socSkillMatrix.ONetElementId); if (relatedSkillItem != null) { dynamicContentExtensions.SetRelatedFieldValue(master, relatedSkillItem, RelatedSkillField, 1); } } if (!string.IsNullOrWhiteSpace(socSkillMatrix.SocCode)) { dynamicContentExtensions.DeleteRelatedFieldValues(master, RelatedSocField); var relatedSocItem = socCodeRepository.Get(d => d.Status == ContentLifecycleStatus.Master && d.GetValue <string>(nameof(SocCode.SOCCode)) == socSkillMatrix.SocCode); if (relatedSocItem != null) { dynamicContentExtensions.SetRelatedFieldValue(master, relatedSocItem, RelatedSocField, 1); } } // Save related on live version socMatrixRepository.Commit(); var temp = socMatrixRepository.GetTemp(master); dynamicContentExtensions.SetFieldValue(temp, nameof(SocSkillMatrix.Title), socSkillMatrix.Title); dynamicContentExtensions.SetFieldValue(temp, nameof(SocSkillMatrix.Contextualised), socSkillMatrix.Contextualised); dynamicContentExtensions.SetFieldValue(temp, nameof(SocSkillMatrix.ONetAttributeType), socSkillMatrix.ONetAttributeType); dynamicContentExtensions.SetFieldValue(temp, nameof(SocSkillMatrix.ONetRank), socSkillMatrix.ONetRank); dynamicContentExtensions.SetFieldValue(temp, nameof(SocSkillMatrix.Rank), socSkillMatrix.Rank); var updatedMaster = socMatrixRepository.CheckinTemp(temp); socMatrixRepository.Publish(updatedMaster, UpdateComment); socMatrixRepository.Commit(); } else { var newSocMatrix = socMatrixRepository.Create(); dynamicContentExtensions.SetFieldValue(newSocMatrix, UrlNameField, (Lstring)socSkillMatrix.SfUrlName); socMatrixRepository.Add(newSocMatrix); socMatrixRepository.Commit(); var newlyCreated = socMatrixRepository.Get(item => item.Visible && item.Status == ContentLifecycleStatus.Live && item.UrlName == socSkillMatrix.SfUrlName); if (newlyCreated != null) { UpsertSocSkillMatrix(socSkillMatrix); } } }
public void UpdateSocSkillMatricesTest(bool jobProfileAvailable) { // Arrange var urlname = "test-url"; var digitalSkill = "digiSkill"; var jobProfile = new JobProfileOverloadForWhatItTakes { UrlName = urlname, DigitalSkillsLevel = digitalSkill }; var dummyDynamicContent = A.Dummy <DynamicContent>(); var socSkill = new SocSkillMatrix { Title = "test soc" }; var socSkills = new List <SocSkillMatrix> { socSkill }; // Fakes Setup A.CallTo(() => fakeRepository.Get(A <Expression <Func <DynamicContent, bool> > > ._)) .Returns(jobProfileAvailable ? dummyDynamicContent : null); A.CallTo(() => fakeRepository.GetMaster(dummyDynamicContent)).Returns(dummyDynamicContent); A.CallTo(() => fakeRepository.Update(dummyDynamicContent, digitalSkill)).DoesNothing(); A.CallTo(() => fakeRepository.Commit()).DoesNothing(); A.CallTo(() => fakeDynamicContentExtensions.SetRelatedFieldValue(dummyDynamicContent, dummyDynamicContent, A <string> ._, A <float> ._)).DoesNothing(); A.CallTo(() => fakeDynamicContentExtensions.DeleteRelatedFieldValues(dummyDynamicContent, A <string> ._)).DoesNothing(); A.CallTo(() => fakeRepository.Get(A <Expression <Func <DynamicContent, bool> > > ._)) .Returns(jobProfileAvailable ? dummyDynamicContent : null); A.CallTo(() => fakeSocSkillRepo.Get(A <Expression <Func <DynamicContent, bool> > > ._)) .Returns(dummyDynamicContent); var jobProfileRepository = new JobProfileRepository(fakeRepository, fakeJobProfileConverter, fakeDynamicContentExtensions, fakeSocSkillRepo, fakeWitConverter, fakeJobProfileSearchConverter); // Act jobProfileRepository.UpdateSocSkillMatrices(jobProfile, socSkills); // Assert A.CallTo(() => fakeRepository.Get(A <Expression <Func <DynamicContent, bool> > > .That.Matches(m => LinqExpressionsTestHelper.IsExpressionEqual(m, item => item.UrlName == jobProfile.UrlName && item.Status == ContentLifecycleStatus.Live && item.Visible)))) .MustHaveHappened(); if (jobProfileAvailable) { A.CallTo(() => fakeRepository.GetMaster(dummyDynamicContent)).MustHaveHappened(); A.CallTo(() => fakeRepository.Update(dummyDynamicContent, A <string> ._)).MustHaveHappened(); A.CallTo(() => fakeRepository.Commit()).MustHaveHappened(); A.CallTo(() => fakeDynamicContentExtensions.SetRelatedFieldValue(A <DynamicContent> ._, A <DynamicContent> ._, "RelatedSkills", A <float> ._)).MustHaveHappened(); A.CallTo(() => fakeDynamicContentExtensions.DeleteRelatedFieldValues(A <DynamicContent> ._, A <string> ._)) .MustHaveHappened(); A.CallTo(() => fakeSocSkillRepo.Get(A <Expression <Func <DynamicContent, bool> > > .That.Matches(m => LinqExpressionsTestHelper.IsExpressionEqual(m, d => d.Status == ContentLifecycleStatus.Master && d.UrlName == socSkill.SfUrlName)))).MustHaveHappened(); } else { A.CallTo(() => fakeRepository.GetMaster(dummyDynamicContent)).MustNotHaveHappened(); A.CallTo(() => fakeRepository.Update(dummyDynamicContent, A <string> ._)).MustNotHaveHappened(); A.CallTo(() => fakeRepository.Commit()).MustNotHaveHappened(); A.CallTo(() => fakeRepository.CheckinTemp(dummyDynamicContent)).MustNotHaveHappened(); A.CallTo(() => fakeDynamicContentExtensions.SetRelatedFieldValue(A <DynamicContent> ._, A <DynamicContent> ._, A <string> ._, A <float> ._)).MustNotHaveHappened(); A.CallTo(() => fakeDynamicContentExtensions.DeleteRelatedFieldValues(A <DynamicContent> ._, A <string> ._)).MustNotHaveHappened(); A.CallTo(() => fakeSocSkillRepo.Get(A <Expression <Func <DynamicContent, bool> > > ._)) .MustNotHaveHappened(); } }