コード例 #1
0
        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);
        }
コード例 #2
0
        public decimal GetStockPriceByDateTime(PriceArguments args)
        {
            IEnumerable <PriceHistory> priceInfos = this.dtoMethods.FindEntitiesByRequestDTO(args).ToList();
            PriceHistory priceinfo = priceInfos.Single();
            decimal      price     = priceinfo.Price;

            return(price);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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);
        }