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); }
public void DecoupleSiteVolumeCalculatorFromForecaster() { var contract = ContractReaderStub.Contract(); var contracts = ContractReaderStub.Contracts(); var products = ContractProductReaderStub.Products(); var sites = ContractProductSiteReaderStub.Sites(); var volumes = ContractProductSiteVolumeReaderStub.SomeVolumes(); var volumeCalculator = new SiteVolumeCalculator(); var volumeForecaster = new SiteVolumeForecaster(volumeCalculator); var actualResult = volumeForecaster.TotalContractedVolume( contract, contracts, products, sites, volumes); Assert.AreEqual(250, actualResult); }