public void SummariseProviderByFundingStream()
        {
            var fundingStream = FundingTypesConfigured().First().FundingStreams.First(s => s.DeliverableLineCode == 5);

            var provider = TestProvider();

            var allocations = TestContractAllocations();

            var collectionPeriods = CollectionPeriodsConfigured();

            var process = new SummarisationNCSProcess();

            var result = process.Summarise(fundingStream, provider, allocations, collectionPeriods);

            result.Count.Should().Be(12);

            result.First(s => s.Period == 201904).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201905).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201906).ActualValue.Should().Be(300);
            result.First(s => s.Period == 201907).ActualValue.Should().Be(400);
            result.First(s => s.Period == 201908).ActualValue.Should().Be(500);
            result.First(s => s.Period == 201909).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201910).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201911).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201912).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202001).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202002).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202003).ActualValue.Should().Be(0);
        }
        public void SummarisePeriods()
        {
            var collectionPeriodsProvider = new CollectionPeriodsProvider(new JsonSerializationService());

            var collectionPeriods = collectionPeriodsProvider.Provide();

            var process = new SummarisationNCSProcess();

            var result = process.SummarisePeriods(TestFundingValues(), collectionPeriods);

            result.Count.Should().Be(12);

            result.First(s => s.Period == 201904).ActualValue.Should().Be(100);
            result.First(s => s.Period == 201905).ActualValue.Should().Be(200);
            result.First(s => s.Period == 201906).ActualValue.Should().Be(300);
            result.First(s => s.Period == 201907).ActualValue.Should().Be(400);
            result.First(s => s.Period == 201908).ActualValue.Should().Be(500);
            result.First(s => s.Period == 201909).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201910).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201911).ActualValue.Should().Be(0);
            result.First(s => s.Period == 201912).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202001).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202002).ActualValue.Should().Be(0);
            result.First(s => s.Period == 202003).ActualValue.Should().Be(0);
        }