예제 #1
0
        public void Test_PublishInstitutionEnrichment_should_return_false()
        {
            Context.ProviderEnrichments.RemoveRange(Context.ProviderEnrichments);
            Context.Save();

            var enrichmentService = new EnrichmentService(Context);
            var publishResults    = enrichmentService.PublishProviderEnrichment(ProviderInstCode.ToLower(), Email);

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

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