public void GetProfitLossReport_Tests() { var reportBuilder = new ProfitLossReportBuilder(_cacheMock.Object); var transactionGroups = new Dictionary <string, List <EquityTransaction> > { { "GOOG", new List <EquityTransaction> { new EquityTransaction { Quantity = 10, Action = "Buy", Price = 2, TradeDate = _firstDate }, new EquityTransaction { Quantity = 20, Action = "Buy", Price = 4, TradeDate = _secondDate }, new EquityTransaction { Quantity = 20, Action = "Buy", Price = 4, TradeDate = _thirdDate } } } }; var profitLossReport = reportBuilder.GetProfitLossReport(transactionGroups); var expected = new List <object> { new { AsOfDate = "29/03/2021", Cost = 180, DailyPandL = 50M, InceptionPandL = 320M, MarketValue = 500M, PrevPrice = 9M, Price = 10M, Quantity = 50, Ticker = "GOOG" } }; profitLossReport.Should().NotBeEmpty() .And.HaveCount(1) .And.BeEquivalentTo(expected); }
protected override void Execute(PrintProfitLossOptions options, IContext context) { context.JournalManager.ReloadJournal(); var reportBuilder = new ProfitLossReportBuilder(); reportBuilder.Journal = context.JournalManager.Journal; reportBuilder.Book = "default"; reportBuilder.AccountQuery = options.AccountQuery; reportBuilder.StartIndex = ResolveIndex(options.StartIndex, context, false); reportBuilder.EndIndex = ResolveIndex(options.EndIndex, context, false) ?? context.JournalManager.Journal.Entries.LastOrDefault().Index?.ToString(); reportBuilder.AssetQuery = options.AssetQuery; var report = reportBuilder.GetReport(); report.Print(Console.Out); }