예제 #1
0
        public void TestGetInstitutionEnrichmentWithDifferentUserFromSavedUser()
        {
            Context = ContextLoader.GetDbContext(Config);//refresh the context

            var enrichmentService = new EnrichmentService(Context);
            //test get the enrichment using user2
            var result = enrichmentService.GetProviderEnrichment(ProviderInstCode, Email2);

            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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        public void Test_GetInstitutionEnrichment_should_error(string instCode, string email)
        {
            var enrichmentService = new EnrichmentService(Context);

            Assert.Throws <ArgumentException>(() => enrichmentService.GetProviderEnrichment(instCode, email));
        }