def test_jobs_status_aggregation_and_filter(inspire_app, override_config): user = create_user(role="cataloger") config = { "CATALOGER_RECORDS_REST_FACETS": { "records-jobs": { "filters": { **current_app.config["JOBS_FILTERS"] }, "aggs": { **jobs_status_aggregation(1) }, } } } with override_config(**config): data = {"status": "open"} expected_record = create_record("job", data) data = {"status": "closed"} create_record("job", data) expected_aggregation = { "meta": { "order": 1, "title": "Status", "type": "multiselect" }, "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "doc_count": 1, "key": "closed" }, { "doc_count": 1, "key": "open" }, ], } with inspire_app.test_client() as client: login_user_via_session(client, email=user.email) response = client.get("/jobs/facets").json assert response["aggregations"]["status"] == expected_aggregation response = client.get("/jobs?status=open").json assert len(response["hits"]["hits"]) == 1 assert (response["hits"]["hits"][0]["metadata"]["control_number"] == expected_record["control_number"])
def test_records_jobs_cataloger_facets(inspire_app): with current_app.test_request_context(): expected_filters = {"field_of_interest", "rank", "region", "status"} expected_aggregations = { **jobs_field_of_interest_aggregation(order=1), **jobs_rank_aggregation(order=2), **jobs_region_aggregation(order=3), **jobs_status_aggregation(order=4), } filters = current_app.config["CATALOGER_RECORDS_REST_FACETS"][ "records-jobs"]()["filters"].keys() aggregations = current_app.config["CATALOGER_RECORDS_REST_FACETS"][ "records-jobs"]()["aggs"] assert filters == expected_filters assert aggregations == expected_aggregations
def records_jobs_cataloger(order=None): if order is None: order = count(start=1) records = records_jobs(order=order) records["aggs"].update({**jobs_status_aggregation(order=next(order))}) return records