def test_0009(models, before, after): valid = int("wtf" not in before) view = View.objects.create(model_name="core.Product", query=before) migration_helpers.forwards_0009(View) view.refresh_from_db() assert view.query == after assert len(BoundQuery.bind(view.get_query(), models).valid_filters) == valid view = View.objects.create(model_name="core.SKU", query=f"product__{before}") migration_helpers.forwards_0009(View) view.refresh_from_db() assert view.query == f"product__{after}" assert len(BoundQuery.bind(view.get_query(), models).valid_filters) == valid
def test_0009_multiple_filters(models): view = View.objects.create( model_name="core.Product", query="name__is_null=True&boat__gt=1&name__is_null__equals=True", ) migration_helpers.forwards_0009(View) view.refresh_from_db() assert view.query == "name__is_null=IsNull&boat__gt=1&name__is_null__equals=IsNull" assert len(BoundQuery.bind(view.get_query(), models).valid_filters) == 3
def test_0009(req, with_arrays, before, after): # pragma: postgres orm_models = get_models(req) valid = int("wtf" not in before) view = View.objects.create(model_name="array.ArrayModel", query=before) migration_helpers.forwards_0009(View) view.refresh_from_db() assert view.query == after assert len(BoundQuery.bind(view.get_query(), orm_models).valid_filters) == valid
def test_bad_filter_value(self, orm_models): query = Query( "app.model", [], [QueryFilter("num", "equals", "fred"), QueryFilter("num", "equals", 1)], ) bound_query = BoundQuery.bind(query, orm_models) assert [f.value for f in bound_query.filters] == ["fred", 1] assert [f.value for f in bound_query.valid_filters] == [1]
def helper(queries, *args, **kwargs): query = Query.from_request("core.Product", *args, **kwargs) bound_query = BoundQuery.bind(query, orm_models) with django_assert_num_queries(queries): data = get_results(req, bound_query, orm_models, False) return { "cols": flatten_table(bound_query.col_fields, data["cols"]), "rows": flatten_table(bound_query.row_fields, data["rows"]), "body": [ flatten_table(bound_query.data_fields, row) for row in data["body"] ], }
def helper(fields, query=None): query = query or {} admin.site.register(JsonModel, JsonAdmin) try: orm_models = get_models(req) query = Query.from_request("json.JsonModel", fields, query) bound_query = BoundQuery.bind(query, orm_models) data = get_results(req, bound_query, orm_models, False) finally: admin.site.unregister(JsonModel) return data["rows"]
def helper(fields, query=None): query = query or [] orm_models = get_models(req) query = Query.from_request("array.ArrayModel", fields, query) bound_query = BoundQuery.bind(query, orm_models) data = get_results(req, bound_query, orm_models, False) for f in bound_query.filters: if f.err_message: print("filter error:", f.path_str, f.lookup, f.value, "->", f.err_message) return data["rows"]
def helper(*fields, **filters): orm_models = get_models(admin_ddb_request) query = Query.from_request("array.ArrayModel", ",".join(fields), list(filters.items())) bound_query = BoundQuery.bind(query, orm_models) data = get_results(admin_ddb_request, bound_query, orm_models, False) for f in bound_query.filters: if f.err_message: print( # pragma: no cover "filter error:", f.path_str, f.lookup, f.value, "->", f.err_message) return data["rows"]
def test_filter_calculated_field(self, orm_models): query = Query("app.model", [], [QueryFilter("fn", "equals", "fred")]) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.filters] == []
def get_product_flat(*args, **kwargs): query = Query.from_request("core.Product", *args) bound_query = BoundQuery.bind(query, orm_models) data = get_results(req, bound_query, orm_models, False) return flatten_table(bound_query.fields, data["rows"])
def helper(queries, *args, **kwargs): query = Query.from_request("core.Product", *args, **kwargs) bound_query = BoundQuery.bind(query, orm_models) with django_assert_num_queries(queries): data = get_results(req, bound_query, orm_models, False) return flatten_table(bound_query.fields, data["rows"])
def test_bad_field_lookup(self, orm_models): query = Query("app.model", [QueryField("fa__count__bob")], []) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.fields] == []
def test_bad_fk_field_aggregate(self, orm_models): query = Query("app.model", [QueryField("tom__jones__yata")], []) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.fields] == []
def test_aggregate(self, orm_models): query = Query("app.model", [QueryField("tom__jones__count")], []) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.fields] == [["tom", "jones", "count"]]
def test_piovt(self, orm_models): query = Query("app.model", [QueryField("tom__jones", pivoted=True)], []) bound_query = BoundQuery.bind(query, orm_models) assert [f.pivoted for f in bound_query.fields] == [True]
def bound_query(query, orm_models): return BoundQuery.bind(query, orm_models)
def test_fk(self, orm_models): query = Query("app.model", [QueryField("tom")], []) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.fields] == []
def test_bad_filter(self, orm_models): query = Query("app.model", [], [QueryFilter("yata", "equals", "fred")]) bound_query = BoundQuery.bind(query, orm_models) assert [f.path for f in bound_query.filters] == []