public static ProductsTestingFixture Given_the_user_is_authenticated(this ProductsTestingFixture fixture, string username, string password)
        {
            var tokenResponse = fixture.TokenClient.RequestResourceOwnerPasswordAsync(username, password, "api1").Result;

            fixture.HttpClient.SetBearerToken(tokenResponse.AccessToken);
            return(fixture);
        }
        public static ProductsTestingFixture Given_the_products_collection_is_empty(this ProductsTestingFixture fixture)
        {
            var filter = Builders <Product> .Filter
                         .Where(p => p.DisplayName != "");

            fixture.Collection.DeleteMany(filter);
            return(fixture);
        }
        public static HttpResponseMessage When_products_endpoint_called_with_search_criteria(this ProductsTestingFixture fixture, int criteriaSet)
        {
            var criteriaAsQueryString = criteriaSet
                                        .GetProductFilterCriteria()
                                        .ToQueryString();

            return(fixture.HttpClient.GetAsync($"/api/products/?{criteriaAsQueryString}").Result);
        }
        public static ProductsTestingFixture Given_the_products_collection_has_products(this ProductsTestingFixture fixture, int maxProducts)
        {
            var products = TestProductData.GetProducts(maxProducts);

            fixture.Collection.InsertMany(products);
            return(fixture);
        }