示例#1
0
        public async Task GetSiteAllocationAmountsAsync_Paging_Consistency()
        {
            var configuration = Configuration.GetConfiguration();

            using (var db = new WaDEContext(configuration))
            {
                for (var i = 0; i < 15; i++)
                {
                    await AllocationAmountsFactBuilder.Load(db);
                }
            }

            var filters = new SiteAllocationAmountsFilters();

            var sut         = CreateWaterAllocationAccessor();
            var baseResults = (await sut.GetSiteAllocationAmountsAsync(filters, 0, 15)).Organizations.SelectMany(a => a.WaterAllocations).Select(a => a.WaterSourceUUID).ToList();

            for (var i = 0; i < 14; i++)
            {
                var pagedResults = await sut.GetSiteAllocationAmountsAsync(filters, i, 2);

                var waterAllocations = pagedResults.Organizations.SelectMany(a => a.WaterAllocations).Select(a => a.WaterSourceUUID).ToList();
                waterAllocations.Should().HaveCount(2);
                waterAllocations.Should().BeEquivalentTo(baseResults.Skip(i).Take(2));
            }
        }
示例#2
0
        public async Task GetSiteAllocationAmountsDigestAsync_OrganizationUuidFilter_WithSite()
        {
            var configuration = Configuration.GetConfiguration();
            AllocationAmountsFact allocationAmountsFact;
            SitesDim site;

            using (var db = new WaDEContext(configuration))
            {
                allocationAmountsFact = await AllocationAmountsFactBuilder.Load(db);

                allocationAmountsFact.AllocationAmountId.Should().NotBe(0);

                site = await SitesDimBuilder.Load(db);

                await AllocationBridgeSitesFactBuilder.Load(db, new AllocationBridgeSitesFactBuilderOptions
                {
                    AllocationAmountsFact = allocationAmountsFact,
                    SitesDim = site
                });
            }

            var filters = new SiteAllocationAmountsDigestFilters
            {
                OrganizationUUID = allocationAmountsFact.Organization.OrganizationUuid
            };

            var sut    = CreateWaterAllocationAccessor();
            var result = (await sut.GetSiteAllocationAmountsDigestAsync(filters, 0, int.MaxValue)).ToList();

            result.Should().HaveCount(1);
            result.First().Sites.Should().HaveCount(1);
            result.First().Sites.First().SiteUUID.Should().Be(site.SiteUuid);
        }
示例#3
0
        public async Task GetSiteAllocationAmountsAsync_Paging()
        {
            var configuration = Configuration.GetConfiguration();

            using (var db = new WaDEContext(configuration))
            {
                for (var i = 0; i < 15; i++)
                {
                    await AllocationAmountsFactBuilder.Load(db);
                }
            }

            var filters = new SiteAllocationAmountsFilters();

            var alreadyRetrieved = new List <string>();

            for (var i = 1; i <= 5; i++)
            {
                var sut          = CreateWaterAllocationAccessor();
                var pagedResults = await sut.GetSiteAllocationAmountsAsync(filters, Utility.NthTriangle(i - 1), i);

                pagedResults.TotalWaterAllocationsCount.Should().Be(15);
                var waterAllocations = pagedResults.Organizations.SelectMany(a => a.WaterAllocations).Select(a => a.WaterSourceUUID).ToList();
                waterAllocations.Should().HaveCount(i);
                foreach (var waterAllocation in waterAllocations)
                {
                    alreadyRetrieved.Should().NotContain(waterAllocation);
                    alreadyRetrieved.Add(waterAllocation);
                }
            }

            alreadyRetrieved.Should().OnlyHaveUniqueItems().And.HaveCount(15);
        }
示例#4
0
        public async Task GetSiteAllocationAmountsDigestAsync_NoFilters_WithSites()
        {
            var configuration = Configuration.GetConfiguration();
            AllocationAmountsFact     allocationAmountsFact;
            AllocationBridgeSitesFact allocationBridgeSitesFact;

            using (var db = new WaDEContext(configuration))
            {
                allocationAmountsFact = await AllocationAmountsFactBuilder.Load(db);

                allocationAmountsFact.AllocationAmountId.Should().NotBe(0);

                allocationBridgeSitesFact = await AllocationBridgeSitesFactBuilder.Load(db,
                                                                                        new AllocationBridgeSitesFactBuilderOptions
                {
                    AllocationAmountsFact = allocationAmountsFact
                });

                allocationBridgeSitesFact.AllocationBridgeId.Should().NotBe(0);
            }

            var filters = new SiteAllocationAmountsDigestFilters();

            var sut    = CreateWaterAllocationAccessor();
            var result = await sut.GetSiteAllocationAmountsDigestAsync(filters, 0, int.MaxValue);

            result.Count().Should().Be(1);
            result.First().Sites.Should().NotBeEmpty();
            result.First().Sites.Count().Should().Be(1);
        }
示例#5
0
        public async Task GetSiteAllocationAmountsAsync_NoFilters()
        {
            var configuration = Configuration.GetConfiguration();
            AllocationAmountsFact allocationAmountsFact;

            using (var db = new WaDEContext(configuration))
            {
                allocationAmountsFact = await AllocationAmountsFactBuilder.Load(db);

                allocationAmountsFact.AllocationAmountId.Should().NotBe(0);
            }

            var filters = new SiteAllocationAmountsFilters();

            var sut    = CreateWaterAllocationAccessor();
            var result = await sut.GetSiteAllocationAmountsAsync(filters, 0, int.MaxValue);

            result.TotalWaterAllocationsCount.Should().Be(1);
            result.Organizations.Should().HaveCount(1);

            var org = result.Organizations.Single();

            org.OrganizationId.Should().Be(allocationAmountsFact.OrganizationId);
            org.WaterAllocations.Should().HaveCount(1);
            org.WaterAllocations[0].AllocationAmountId.Should().Be(allocationAmountsFact.AllocationAmountId);
        }
示例#6
0
        public async Task GetSiteAllocationAmountsDigestAsync_Paging()
        {
            var configuration = Configuration.GetConfiguration();

            using (var db = new WaDEContext(configuration))
            {
                for (var i = 0; i < 15; i++)
                {
                    await AllocationAmountsFactBuilder.Load(db);
                }
            }

            var filters = new SiteAllocationAmountsDigestFilters();

            var alreadyRetrieved = new List <long>();

            for (var i = 1; i <= 5; i++)
            {
                var sut = CreateWaterAllocationAccessor();
                var waterAllocations = (await sut.GetSiteAllocationAmountsDigestAsync(filters, Utility.NthTriangle(i - 1), i)).Select(a => a.AllocationAmountId).ToList();
                waterAllocations.Should().HaveCount(i);
                foreach (var waterAllocation in waterAllocations)
                {
                    alreadyRetrieved.Should().NotContain(waterAllocation);
                    alreadyRetrieved.Add(waterAllocation);
                }
            }

            alreadyRetrieved.Should().OnlyHaveUniqueItems().And.HaveCount(15);
        }
示例#7
0
        public async Task GetSiteAllocationAmountsDigestAsync_Paging_RequestAfterLast()
        {
            var configuration = Configuration.GetConfiguration();

            using (var db = new WaDEContext(configuration))
            {
                for (var i = 0; i < 3; i++)
                {
                    await AllocationAmountsFactBuilder.Load(db);
                }
            }

            var filters = new SiteAllocationAmountsDigestFilters();

            var sut = CreateWaterAllocationAccessor();
            var waterAllocations = (await sut.GetSiteAllocationAmountsDigestAsync(filters, 4, 10)).Select(a => a.AllocationAmountId).ToList();

            waterAllocations.Should().HaveCount(0);
        }
示例#8
0
        public async Task GetSiteAllocationAmountsAsync_Paging_RequestAfterLast()
        {
            var configuration = Configuration.GetConfiguration();

            using (var db = new WaDEContext(configuration))
            {
                for (var i = 0; i < 3; i++)
                {
                    await AllocationAmountsFactBuilder.Load(db);
                }
            }

            var filters = new SiteAllocationAmountsFilters();

            var sut          = CreateWaterAllocationAccessor();
            var pagedResults = await sut.GetSiteAllocationAmountsAsync(filters, 4, 10);

            pagedResults.TotalWaterAllocationsCount.Should().Be(3);
            var waterAllocations = pagedResults.Organizations.SelectMany(a => a.WaterAllocations).Select(a => a.WaterSourceUUID).ToList();

            waterAllocations.Should().HaveCount(0);
        }
示例#9
0
        public async Task GetSiteAllocationAmountsDigestAsync_OrganizationUuidFilter_NoSites()
        {
            var configuration = Configuration.GetConfiguration();
            AllocationAmountsFact allocationAmountsFact;

            using (var db = new WaDEContext(configuration))
            {
                allocationAmountsFact = await AllocationAmountsFactBuilder.Load(db);

                allocationAmountsFact.AllocationAmountId.Should().NotBe(0);
            }

            var filters = new SiteAllocationAmountsDigestFilters
            {
                OrganizationUUID = allocationAmountsFact.Organization.OrganizationUuid
            };

            var sut    = CreateWaterAllocationAccessor();
            var result = (await sut.GetSiteAllocationAmountsDigestAsync(filters, 0, int.MaxValue)).ToList();

            result.Should().HaveCount(1);
            result.First().Sites.Should().BeEmpty();
        }
示例#10
0
        public async Task GetSiteAllocationAmountsDigestAsync_OrganizationUuidFilter_NoMatch()
        {
            var configuration = Configuration.GetConfiguration();
            AllocationAmountsFact allocationAmountsFact;
            SitesDim site;

            using (var db = new WaDEContext(configuration))
            {
                allocationAmountsFact = await AllocationAmountsFactBuilder.Load(db);

                allocationAmountsFact.AllocationAmountId.Should().NotBe(0);
            }

            var filters = new SiteAllocationAmountsDigestFilters
            {
                OrganizationUUID = new Faker().Random.AlphaNumeric(10)
            };

            var sut    = CreateWaterAllocationAccessor();
            var result = await sut.GetSiteAllocationAmountsDigestAsync(filters, 0, int.MaxValue);

            result.Should().BeEmpty();
        }