def test_filter(predicate, paths): pf = predicates.PredicateFilter(predicate, schema=ProductDataSchema) found_paths = [] org_filter_field = pf.filter_field def mock_filter_field(obj, path, operator, value): found_paths.append(path) return org_filter_field(obj, path, operator, value) pf.filter_field = mock_filter_field pf.match({"slug": {"nl-BE": "test-categorie"}}) assert paths == found_paths
def test_in_filter(): skus = '("1337", "1338")' predicate = f"masterVariant(sku in {skus}) or variants(sku in {skus})" pf = predicates.PredicateFilter(predicate, schema=ProductDataSchema) product_data = { "masterVariant": { "sku": "1337" }, "variants": [{ "sku": "1338" }, { "sku": "1339" }], } assert pf.match(product_data) is True product_data = { "masterVariant": { "sku": "1444" }, "variants": [{ "sku": "1338" }, { "sku": "1339" }], } assert pf.match(product_data) is True product_data = { "masterVariant": { "sku": "1444" }, "variants": [{ "sku": "1438" }, { "sku": "1139" }], } assert pf.match(product_data) is False
def test_tokenize(predicate): predicates.PredicateFilter(predicate, schema=None)
def test_tokenize(predicate): predicates.PredicateFilter(predicate)