public void ShouldGetPriceInfo() { // Arrange var phTableRepository = Substitute.For <ITableRepository <PriceHistory> >(); var DTOMethods = Substitute.For <IDTOMethodsforPriceHistory>(); PriceHistoryService phService = new PriceHistoryService(phTableRepository, DTOMethods); PriceHistory priceHist = new PriceHistory { PriceHistoryID = 1, StockID = 1, DateTimeBegin = new DateTime(2019, 8, 20, 09, 55, 00), DateTimeEnd = new DateTime(2019, 8, 20, 19, 30, 00), Price = 200 }; PriceArguments priceArguments = new PriceArguments() { StockId = 1, DateTimeLookUp = new DateTime(2019, 8, 20, 09, 56, 00) }; DTOMethods.FindEntitiesByRequestDTO(priceArguments).Returns(new List <PriceHistory> { priceHist }); // Act var priceHistory = phService.GetStockPriceByDateTime(priceArguments); // Assert var hist = DTOMethods.Received(1).FindEntitiesByRequestDTO(priceArguments); }
public decimal GetStockPriceByDateTime(PriceArguments args) { IEnumerable <PriceHistory> priceInfos = this.dtoMethods.FindEntitiesByRequestDTO(args).ToList(); PriceHistory priceinfo = priceInfos.Single(); decimal price = priceinfo.Price; return(price); }
public IEnumerable <PriceHistory> FindEntitiesByRequestDTO(PriceArguments DTOarguments) { PriceArguments args = DTOarguments; var pricehist = this.db.PriceHistories.ToList(); var pricehistory = this.db.PriceHistories .Where(ph => ph.DateTimeBegin <= args.DateTimeLookUp && ph.DateTimeEnd >= args.DateTimeLookUp && ph.StockID == args.StockId) .Select(p => p).ToList(); return(pricehistory); }
public void ShouldEditPriceDateEnd() { // Arrange var phTableRepository = Substitute.For <ITableRepository <PriceHistory> >(); var DTOMethods = Substitute.For <IDTOMethodsforPriceHistory>(); PriceHistoryService phService = new PriceHistoryService(phTableRepository, DTOMethods); PriceHistory lastpriceHist = new PriceHistory { PriceHistoryID = 1, StockID = 1, DateTimeBegin = new DateTime(2019, 8, 20, 09, 55, 00), DateTimeEnd = new DateTime(2019, 8, 20, 19, 30, 00), Price = 200 }; IEnumerable <PriceHistory> histories = new List <PriceHistory>() { lastpriceHist }; PriceArguments priceArguments = new PriceArguments() { StockId = 1, DateTimeLookUp = new DateTime(2019, 8, 20, 09, 56, 00) }; int stockId = 1; DateTime DateTimeEnd = new DateTime(2019, 8, 20, 09, 56, 00); DTOMethods.FindEntitiesByRequest(stockId).Returns(new List <PriceHistory> { lastpriceHist }); // Act phService.EditPriceDateEnd(stockId, DateTimeEnd); // Assert var phistories = DTOMethods.FindEntitiesByRequest(stockId); lastpriceHist.DateTimeEnd = DateTimeEnd; phTableRepository.SaveChanges(); }
public void SimulatePriceChange(int stockId, decimal priceBeforeChanges, DateTime dateTimeX) { PriceArguments arguments = new PriceArguments() { DateTimeLookUp = dateTimeX, StockId = stockId }; Random random = new Random(); bool isPriceIncreaseExpectation = false; if (random.Next(100) > 50) { isPriceIncreaseExpectation = true; } double percent = (double)(random.Next(5)) / 100; DateTime dateTimeEnd = DateTime.Today.AddYears(200); decimal price; this.priceHistoryService.EditPriceDateEnd(stockId, dateTimeX); if (isPriceIncreaseExpectation) { price = priceBeforeChanges * (decimal)(1 + percent); } else { price = priceBeforeChanges * (decimal)(1 - percent); } PriceInfo priceInfo = new PriceInfo { StockId = stockId, DateTimeBegin = dateTimeX.AddSeconds(1), DateTimeEnd = dateTimeEnd, Price = price }; this.priceHistoryService.AddPriceInfo(priceInfo); }