public void Test_SaveInstitutionEnrichment_should__argument_exception(string instCode, string email) { const string trainWithDisabilityText = "TrainWithDisabilily Text"; const string trainWithUsText = "TrainWithUs Text"; const string instDesc = "school1 description enrichement"; var enrichmentService = new EnrichmentService(Context); var model = new UcasProviderEnrichmentPostModel { EnrichmentModel = new ProviderEnrichmentModel { TrainWithDisability = trainWithDisabilityText, TrainWithUs = trainWithUsText, AccreditingProviderEnrichments = new List <AccreditingProviderEnrichment> { new AccreditingProviderEnrichment { UcasProviderCode = AccreditingInstCode, Description = instDesc, } } } }; Assert.Throws <ArgumentException>(() => enrichmentService.SaveProviderEnrichment(model, instCode, email)); }
public void Test_InstitutionEnrichment_And_Publishing_Workflow() { const string trainWithDisabilityText = "TrainWithDisabilily Text"; const string trainWithUsText = "TrainWithUs Text"; const string trainWithDisabilityUpdatedText = "TrainWithDisabilily Text updated"; const string trainWithUsUpdatedText = "TrainWithUs Text updated"; const string instDesc = "school1 description enrichement"; var enrichmentService = new EnrichmentService(Context); var model = new UcasProviderEnrichmentPostModel { EnrichmentModel = new ProviderEnrichmentModel { TrainWithDisability = trainWithDisabilityText, TrainWithUs = trainWithUsText, AccreditingProviderEnrichments = new List <AccreditingProviderEnrichment> { new AccreditingProviderEnrichment { UcasProviderCode = AccreditingInstCode, Description = instDesc, } } } }; var emptyEnrichment = enrichmentService.GetProviderEnrichment(ProviderInstCode, Email); emptyEnrichment.Status.Should().Be(EnumStatus.Draft, "no enrichments saved yet"); //test save enrichmentService.SaveProviderEnrichment(model, ProviderInstCode.ToLower(), Email); //test get var result = enrichmentService.GetProviderEnrichment(ProviderInstCode.ToLower(), Email); result.Should().NotBeNull(); result.EnrichmentModel.Should().NotBeNull(); result.EnrichmentModel.TrainWithDisability.Should().BeEquivalentTo(trainWithDisabilityText); result.EnrichmentModel.TrainWithUs.Should().BeEquivalentTo(trainWithUsText); result.LastPublishedTimestampUtc.Should().BeNull(); result.Status.Should().BeEquivalentTo(EnumStatus.Draft); result.EnrichmentModel.RegionCode.Should().Be(RegionCode); //test update var updatedmodel = new UcasProviderEnrichmentPostModel { EnrichmentModel = new ProviderEnrichmentModel { TrainWithDisability = trainWithDisabilityUpdatedText, TrainWithUs = trainWithUsUpdatedText, AccreditingProviderEnrichments = new List <AccreditingProviderEnrichment> { new AccreditingProviderEnrichment { UcasProviderCode = AccreditingInstCode, Description = instDesc, } } } }; enrichmentService.SaveProviderEnrichment(updatedmodel, ProviderInstCode.ToLower(), Email); var updateResult = enrichmentService.GetProviderEnrichment(ProviderInstCode, Email); updateResult.EnrichmentModel.TrainWithDisability.Should().BeEquivalentTo(trainWithDisabilityUpdatedText); updateResult.EnrichmentModel.TrainWithUs.Should().BeEquivalentTo(trainWithUsUpdatedText); updateResult.LastPublishedTimestampUtc.Should().BeNull(); updateResult.EnrichmentModel.RegionCode.Should().Be(RegionCode); //publish var publishResults = enrichmentService.PublishProviderEnrichment(ProviderInstCode.ToLower(), Email); publishResults.Should().BeTrue(); var publishRecord = enrichmentService.GetProviderEnrichment(ProviderInstCode.ToLower(), Email); publishRecord.Status.Should().BeEquivalentTo(EnumStatus.Published); publishRecord.LastPublishedTimestampUtc.Should().NotBeNull(); publishRecord.EnrichmentModel.RegionCode.Should().Be(RegionCode); var publishedProvider = Context.Providers.Single(p => p.ProviderCode == ProviderInstCode); publishedProvider.LastPublishedAt.Should().BeCloseTo(publishRecord.UpdatedTimestampUtc.Value, 5000); publishedProvider.ChangedAt.Should().BeCloseTo(publishRecord.UpdatedTimestampUtc.Value, 5000); //test save again after publish var afterPublishedModel = new UcasProviderEnrichmentPostModel { EnrichmentModel = new ProviderEnrichmentModel { TrainWithDisability = trainWithDisabilityText, TrainWithUs = trainWithUsText, AccreditingProviderEnrichments = new List <AccreditingProviderEnrichment> { new AccreditingProviderEnrichment { UcasProviderCode = AccreditingInstCode, Description = instDesc, } }, RegionCode = 909 } }; enrichmentService.SaveProviderEnrichment(afterPublishedModel, ProviderInstCode.ToLower(), Email); var updateResult2 = enrichmentService.GetProviderEnrichment(ProviderInstCode, Email); updateResult2.EnrichmentModel.TrainWithDisability.Should().BeEquivalentTo(trainWithDisabilityText); updateResult2.EnrichmentModel.TrainWithUs.Should().BeEquivalentTo(trainWithUsText); updateResult2.Status.Should().BeEquivalentTo(EnumStatus.Draft); updateResult2.LastPublishedTimestampUtc.ToString().Should().BeEquivalentTo(publishRecord.LastPublishedTimestampUtc.ToString()); updateResult2.EnrichmentModel.RegionCode.Should().NotBe(RegionCode); //check number of records generated from this var draftCount = Context.ProviderEnrichments.Count(x => x.Status == EnumStatus.Draft); var publishedCount = Context.ProviderEnrichments.Count(x => x.Status == EnumStatus.Published); publishedCount.Should().Be(1); draftCount.Should().Be(1); }
public void EnrichmentDataSurvivesDeleteAndRecreate() { // Arrange var enrichmentService = new EnrichmentService(Context); var dataService = new DataService(Context, enrichmentService, new Mock <ILogger <DataService> >().Object); var sourceModel = new UcasProviderEnrichmentPostModel { EnrichmentModel = new ProviderEnrichmentModel { TrainWithUs = "Oh the grand old Duke of York", TrainWithDisability = "He had 10,000 men", AccreditingProviderEnrichments = new List <AccreditingProviderEnrichment> { new AccreditingProviderEnrichment { UcasProviderCode = AccreditingInstCode, Description = "He marched them up to the top of the hill" } } }, }; enrichmentService.SaveProviderEnrichment(sourceModel, _ucasInstitution.ProviderCode, Email); // Act var ucasPayload = new UcasPayload { // todo: test with change of this institution: https://trello.com/c/e1FwXuYk/133-ucas-institutions-dont-get-updated-during-ucas-import Institutions = new List <UcasInstitution> { new UcasInstitution { InstCode = _ucasInstitution.ProviderCode, InstName = "Rebranded Provider", }, new UcasInstitution { InstCode = AccreditingInstCode, InstName = "Rebranded Accrediting Provider", }, }, Courses = new List <UcasCourse> { new UcasCourse { InstCode = _ucasInstitution.ProviderCode, CrseCode = "CC11", AccreditingProvider = AccreditingInstCode, }, }, }; new UcasDataMigrator(Context, new Mock <Serilog.ILogger>().Object, ucasPayload).UpdateUcasData(); // Assert var res = enrichmentService.GetProviderEnrichment(_ucasInstitution.ProviderCode, Email); res.EnrichmentModel.TrainWithUs.Should().Be(sourceModel.EnrichmentModel.TrainWithUs); res.EnrichmentModel.TrainWithDisability.Should().Be(sourceModel.EnrichmentModel.TrainWithDisability); res.EnrichmentModel.AccreditingProviderEnrichments.Should().HaveCount(1); res.EnrichmentModel.AccreditingProviderEnrichments.Should().HaveSameCount(sourceModel.EnrichmentModel.AccreditingProviderEnrichments); res.EnrichmentModel.AccreditingProviderEnrichments[0].Description.Should().Be(sourceModel.EnrichmentModel.AccreditingProviderEnrichments[0].Description); res.EnrichmentModel.AccreditingProviderEnrichments[0].UcasProviderCode.Should().Be(sourceModel.EnrichmentModel.AccreditingProviderEnrichments[0].UcasProviderCode); }