public void When_StringWeightReporter_Given_Fundbot_Portfolio_Then_Report_Is_Written_To_String() { // setup var portfolio = TestDataGenerator.GenerateFundbotPortfolio(); var categories = TestDataGenerator.GenerateFundbotCategories().ToList(); var weights = TestDataGenerator.GenerateFundbotWeights(categories).ToList(); _quoterMock.Setup(m => m.GetQuotes(It.IsAny <IEnumerable <Security> >())).Returns(new Dictionary <Security, decimal> { { new Security { Symbol = "XFN.TO" }, 29.97M }, { new Security { Symbol = "AGG" }, 1000.69M }, { new Security { Symbol = "XIU.TO" }, 21.1M }, { new Security { Symbol = "CPD.TO" }, 16.55M }, { new Security { Symbol = "EFA" }, 68.24M }, }); // execute StringWeightReporter reporter = new StringWeightReporter(_quoterMock.Object); var result = reporter.GetReport(portfolio, categories, weights); // validate Assert.That(result, Is.Not.Null); Assert.That(result, Is.Not.Empty); const string expected = @"Portfolio: {0} Region USD: 57.2% CAD: 28.3% INTL: 14.5% Asset Class Bonds: 57.2% Equity: 25.3% Preferred: 17.5% Currency USD: 71.7% CAD: 28.3% "; Assert.That(result, Is.EqualTo(string.Format(expected, portfolio.Name))); }