예제 #1
0
        public void ContractProductSiteVolumesFileNotFound()
        {
            var filePath = string.Empty;;

            var reader      = new ContractProductSiteVolumeReaderStub(filePath);
            var dataFile    = new ContractProductSiteVolumeData(reader);
            var isFileFound = false;

            dataFile.VolumeFileNotFound(isFileFound);
        }
예제 #2
0
        public void EmptyContractProductSiteVolumes()
        {
            var filePath = string.Empty;;
            var reader   = new ContractProductSiteVolumeReaderStub(filePath);
            var dataFile = new ContractProductSiteVolumeData(reader);

            var result = dataFile.EmptyVolumes();

            Assert.AreEqual(0, result.Count());
        }
예제 #3
0
        public void IsContractProductSiteVolumesAvailable()
        {
            var filePath = string.Empty;;
            var reader   = new ContractProductSiteVolumeReaderStub(filePath);
            var datafile = new ContractProductSiteVolumeData(reader);

            var result = datafile.IsVolumesAvailable();

            Assert.IsTrue(result);
        }
예제 #4
0
        public void AllContractProductSiteVolumes()
        {
            var filePath = string.Empty;;
            var reader   = new ContractProductSiteVolumeReaderStub(filePath);
            var dataFile = new ContractProductSiteVolumeData(reader);

            var result = dataFile.Records();

            Assert.AreEqual(100, result.ElementAt(0).Volume);
            Assert.AreEqual(002, result.ElementAt(0).SiteId);
            Assert.AreEqual(new DateTime(2018, 5, 3), result.ElementAt(0).BillingMonth);
        }
예제 #5
0
        public void AllContractProductSiteVolumes()
        {
            var filePath   = "ContractProductSiteVolumes.xml";
            var reader     = new ContractProductSiteVolumeReaderStub(filePath);
            var datafile   = new ContractProductSiteVolumeData(reader);
            var repository = new ContractProductSiteVolumeRepository(datafile);
            var result     = repository.Records();

            Assert.AreEqual(100, result.ElementAt(0).Volume);
            Assert.AreEqual(002, result.ElementAt(0).SiteId);
            Assert.AreEqual(new DateTime(2018, 5, 3), result.ElementAt(0).BillingMonth);
        }
예제 #6
0
        private static decimal TotalContractedVolume(long contractId)
        {
            var contractFile            = Path.GetFullPath(@"..\..\DataFiles\Contracts.xml");
            var contractProductFile     = Path.GetFullPath(@"..\..\DataFiles\ContractProducts.xml");
            var contractProductSiteFile =
                Path.GetFullPath(@"..\..\DataFiles\ContractProductSites.xml");
            var siteVolumeFile = Path.GetFullPath(@"..\..\DataFiles\SiteVolumes.xml");

            var calculculator = new SiteVolumeCalculator();
            var forecaster    = new SiteVolumeForecaster(calculculator);

            var contractReader = new ContractReader(contractFile);
            var contractData   = new ContractData(contractReader);
            var contractRepo   = new ContractRepository(contractData);


            var contractProductReader = new ContractProductReader(contractProductFile);
            var contractProductData   = new ContractProductData(contractProductReader);
            var productsRepo          = new ContractProductRepository(contractProductData);


            var contractProductSiteReader =
                new ContractProductSiteReader(contractProductSiteFile);
            var contractProductSiteData = new ContractProductSiteData(contractProductSiteReader);
            var sitesRepo =
                new ContractProductSiteRepository(contractProductSiteData);


            var contractProductSiteVolumeReader =
                new ContractProductSiteVolumeReader(siteVolumeFile);
            var contractProductSiteVolumeData =
                new ContractProductSiteVolumeData(contractProductSiteVolumeReader);
            var volumesRepo =
                new ContractProductSiteVolumeRepository(contractProductSiteVolumeData);


            var contract  = contractRepo.Contract(x => x.Id == contractId);
            var contracts = contractRepo.Contracts().ToList();

            var contractProducts     = productsRepo.Records().ToList();
            var contractProductSites = sitesRepo.Records().ToList();
            var siteVolumes          = volumesRepo.Records().ToList();

            var total = forecaster.TotalContractedVolume(contract, contracts,
                                                         contractProducts, contractProductSites, siteVolumes);

            return(total);
        }