public async Task Portfolio_should_be_empty_after_loading()
        {
            var portfolioWithValue = new PortfolioWithValue();

            await portfolioWithValue.Load();

            portfolioWithValue.Portfolio.HasAssets.Should().BeFalse();
        }
        public async Task Portfolio_should_have_assets_after_adding_assets()
        {
            var portfolioWithValue = new PortfolioWithValue();

            await portfolioWithValue.Load();

            portfolioWithValue.AddAsset(new Asset(new Symbol("MSFT"), 10));
            portfolioWithValue.AddAsset(new Asset(new Symbol("AAPL"), 10));

            portfolioWithValue.Portfolio.Assets.Should().BeEquivalentTo(new Asset(new Symbol("MSFT"), 10), new Asset(new Symbol("AAPL"), 10));
        }
        public async Task Calculate_should_set_total_value()
        {
            // ReSharper disable once ConvertToLocalFunction
            QuoteLoaderDelegate quoteLoaderPrice100 = symbols => Task.FromResult(symbols.Select(symbol => new Quote(symbol, 100)));

            var portfolioWithValue = new PortfolioWithValue(quoteLoaderPrice100);

            await portfolioWithValue.Load();

            portfolioWithValue.AddAsset(new Asset(new Symbol("MSFT"), 10));
            portfolioWithValue.AddAsset(new Asset(new Symbol("AAPL"), 10));
#pragma warning disable 4014
            portfolioWithValue.Calculate();
#pragma warning restore 4014

            portfolioWithValue.TotalValue.Should().Be(2000);
        }
        public void Portfolio_should_be_null_initially()
        {
            var portfolioWithValue = new PortfolioWithValue();

            portfolioWithValue.Portfolio.Should().BeNull();
        }
 public MainViewModel([NotNull] PortfolioWithValue portfolioWithValue)
 {
     _portfolioWithValue = portfolioWithValue;
 }