public async void Wishlist_GameWithNoProducts_IsNotInModel()
        {
            var game = new Game
            {
                Id = new Guid("09BD7D30-5268-4A02-A400-1F302040B6AA"),
                GameSKUs = new List<GameProduct>()
            };

            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();

            Mock<DbSet<Game>> gameDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Game> { game }.AsQueryable());
            dbStub.Setup(db => db.Games).Returns(gameDbSetStub.Object);

            Mock<DbSet<Platform>> platformDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Platform>().AsQueryable());
            dbStub.Setup(db => db.Platforms).Returns(platformDbSetStub.Object);

            Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member>().AsQueryable());
            dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object);

            ReportsController controller = new ReportsController(dbStub.Object);

            var result = await controller.Wishlist() as ViewResult;

            Assert.That(result != null);

            var model = (WishlistViewModel)result.Model;

            Assert.That(model.Games.Count(), Is.EqualTo(0));
            Assert.That(model.WishlistCount, Is.EqualTo(0));
        }
        public async void Wishlist_GameWithProducts_Wishlisted_IsInModel_SubtotalsMatch()
        {
            var platforms = new List<Platform>
            {
                new Platform
                {
                    PlatformCode = "TPlat",
                    PlatformName = "Test Platform"
                },
                new Platform
                {
                    PlatformCode = "OTPlat",
                    PlatformName = "Other Test Platform"
                },
            };

            List<GameProduct> products = new List<GameProduct>
            {
                new PhysicalGameProduct
                {
                    Id = new Guid("D9825FE1-F575-4C36-ACAA-98BA71FACFA8"),
                    Platform = platforms[0]
                },
                new PhysicalGameProduct
                {
                    Id = new Guid("F546AD43-58C8-44FE-9799-ACC7F0B6368E"),
                    Platform = platforms[1]
                }
            };

            var game = new Game
            {
                Id = new Guid("09BD7D30-5268-4A02-A400-1F302040B6AA"),
                GameSKUs = products
            };
            
            platforms[0].GameProducts = new List<GameProduct>
            {
                products[0]
            };
            platforms[1].GameProducts = new List<GameProduct>
            {
                products[1]
            };

            var members = new List<Member>
            {
                new Member
                {
                    UserId = new Guid("1369019C-8F25-427A-A8F1-00287247D4AE"),
                    Wishlist = new List<Product>
                    {
                        products[0]
                    }
                },
                new Member
                {
                    UserId = new Guid("D814D26E-AD33-48C5-9518-EA43B75AE5AC"),
                    Wishlist = new List<Product>
                    {
                        products[0],
                        products[1]
                    }
                }
            };

            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();

            Mock<DbSet<Game>> gameDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Game> { game }.AsQueryable());
            dbStub.Setup(db => db.Games).Returns(gameDbSetStub.Object);

            Mock<DbSet<Platform>> platformDbSetStub = TestHelpers.GetFakeAsyncDbSet(platforms.AsQueryable());
            dbStub.Setup(db => db.Platforms).Returns(platformDbSetStub.Object);

            Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(members.AsQueryable());
            dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object);

            ReportsController controller = new ReportsController(dbStub.Object);

            var result = await controller.Wishlist() as ViewResult;

            Assert.That(result != null);

            var model = (WishlistViewModel)result.Model;

            Assert.That(model.Games.Count(), Is.EqualTo(1));
            Assert.That(model.Games.First().WishlistCount, Is.EqualTo(3));

            Assert.That(model.Platforms.First(p =>
                p.Platform.PlatformCode == "TPlat").WishlistCount, Is.EqualTo(2));
            Assert.That(model.Platforms.First(p =>
                p.Platform.PlatformCode == "OTPlat").WishlistCount, Is.EqualTo(1));

            Assert.That(model.WishlistCount, Is.EqualTo(3));
        }