public void Products_Filter_Companies()
        {
            var viewModel = new SearchProductsViewModel(DependencyContainer);

            var dataContext = DependencyContainer.Resolve <DataContext>();
            var company1    = new CrashCompany()
            {
                CCName = "test company"
            };
            var company2 = new CrashCompany()
            {
                CCName = "test company2"
            };

            dataContext.Products.Add(new Product()
            {
                ProductDescription = "abc", Company = company2
            });
            dataContext.Products.Add(new Product()
            {
                ProductDescription = "def", Company = company2
            });
            dataContext.Products.Add(new Product()
            {
                ProductDescription = "product 1", Company = company1
            });

            dataContext.CrashCompanies.Add(new CrashCompany()
            {
                CCName = "ghi"
            });
            dataContext.CrashCompanies.Add(new CrashCompany()
            {
                CCName = "jkl"
            });
            dataContext.CrashCompanies.Add(company1);

            dataContext.SaveChanges();

            viewModel.SearchBox = "product 1";
            Assert.Single(viewModel.Items);

            viewModel.SelectedCompany = company1.CCName;
            Assert.Single(viewModel.Items);

            var expected = viewModel.Items.First();

            Assert.NotNull(expected.Company);
            Assert.NotNull(expected.Company.Products);
            Assert.Equal(1, expected.Company.Products.Count);
        }
        public void Products_Filter_Company_AndSuppliers()
        {
            var viewModel = new SearchProductsViewModel(DependencyContainer);

            var dataContext = DependencyContainer.Resolve <DataContext>();

            var supplier1 = new Supplier {
                SupplierName = "supplier1"
            };
            var supplier2 = new Supplier {
                SupplierName = "ghi"
            };

            dataContext.Suppliers.Add(supplier2);
            dataContext.Suppliers.Add(new Supplier {
                SupplierName = "jkl"
            });
            dataContext.Suppliers.Add(supplier1);

            var company1 = new CrashCompany()
            {
                CCName = "test company"
            };
            var company2 = new CrashCompany()
            {
                CCName = "test company2"
            };

            dataContext.CrashCompanies.Add(new CrashCompany()
            {
                CCName = "ghi"
            });
            dataContext.CrashCompanies.Add(new CrashCompany()
            {
                CCName = "jkl"
            });
            dataContext.CrashCompanies.Add(company1);

            dataContext.Products.Add(new Product()
            {
                ProductDescription = "product-2", Company = company2, Supplier = supplier1
            });
            dataContext.Products.Add(new Product()
            {
                ProductDescription = "product-1", Company = company2, Supplier = supplier2
            });
            dataContext.Products.Add(new Product()
            {
                ProductDescription = "def-ghijk", Company = company1, Supplier = supplier1
            });

            dataContext.SaveChanges();

            viewModel.SearchBox = "product-";
            Assert.Equal(2, viewModel.Items.Count);

            viewModel.SelectedCompany = company2.CCName;
            Assert.Equal(2, viewModel.Items.Count);

            viewModel.SelectedSupplier = supplier1.SupplierName;
            Assert.Single(viewModel.Items);

            var expected = viewModel.Items.First();

            Assert.NotNull(expected.Company);
            Assert.NotNull(expected.Company.Products);

            Assert.Equal(2, expected.Company.Products.Count);
        }