public async Task <Unit> Handle(ImportStockQuotes request, CancellationToken cancellationToken) { var importer = new StockQuoteImporter(); var quotes = importer.LoadStockQuotes(request.Stream); var repo = _uow.Repository <Model.StockQuote>(); foreach (var quote in quotes) { repo.Add(quote); } await _uow.SaveChanges(); return(Unit.Value); }
public void CanLoadBlankHigh() { var file = @"ABC,20200115,2,,1,3,12345"; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(file))) { var importer = new StockQuoteImporter(); var quotes = importer.LoadStockQuotes(stream); Assert.AreEqual(1, quotes.Count()); var quote = quotes.First(); Assert.AreEqual("ABC", quote.Code); Assert.AreEqual(new DateTime(2020, 1, 15), quote.Date); Assert.AreEqual(2M, quote.Open); Assert.IsFalse(quote.High.HasValue); Assert.AreEqual(1M, quote.Low); Assert.AreEqual(3M, quote.Close); Assert.AreEqual(12345, quote.Volume); } }
public void CanLoadFile() { var file = @"14D,20200115,.2,.2,.195,.195,231357 14DO,20200115,.038,.038,.03,.03,30001"; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(file))) { var importer = new StockQuoteImporter(); var quotes = importer.LoadStockQuotes(stream); Assert.AreEqual(2, quotes.Count()); var quote = quotes.First(); Assert.AreEqual("14D", quote.Code); Assert.AreEqual(new DateTime(2020, 1, 15), quote.Date); Assert.AreEqual(.2M, quote.Open); Assert.AreEqual(.2M, quote.High); Assert.AreEqual(.195M, quote.Low); Assert.AreEqual(.195M, quote.Close); Assert.AreEqual(231357, quote.Volume); } }