예제 #1
0
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
예제 #3
0
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