public void ContractForContractId() { var filePath = "Contracts.xml"; var reader = new ContractReaderStub(filePath); var datafile = new ContractData(reader); var repository = new ContractRepository(datafile); var result = repository.Contract(x => x.Id == 1); Assert.AreEqual(1, result.Id); Assert.AreEqual(30, result.ClientId); Assert.AreEqual(new DateTime(2017, 1, 1), result.StartDate); Assert.AreEqual(new DateTime(2018, 1, 1), result.EndDate); }
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); }