def test_or(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, data)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {
                "or_filter": [
                    {
                        "field": "field_1",
                        "operator": "=",
                        "value": "data"
                    },
                    {
                        "field": "field_1",
                        "operator": "=",
                        "value": "test"
                    },
                ]
            },
        },
    )
    assert_success_response(response)
    assert response.json == {
        "data": {
            "1": data["a/1"],
            "2": data["a/2"]
        },
        "position": 3,
    }
def test_same_collection(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": [
            {
                "collection": "b",
                "ids": [1],
                "mapped_fields": ["field_4"]
            },
            {
                "collection": "b",
                "ids": [2],
                "mapped_fields": ["field_5"]
            },
        ],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {
        "b/1": {
            "field_4": "data"
        },
        "b/2": {
            "field_5": 42
        },
    }
def test_position_simple(json_client, db_connection, db_cur):
    setup_events_data(db_connection, db_cur)
    request = {
        "requests": default_request_parts,
        "position": 1,
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {
        "a": {
            "1": {
                "field_1": "data",
                "field_2": 42,
                "field_3": [1, 2, 3],
                "common_field": 1,
                "meta_position": 1,
            },
        },
        "b": {
            "1": {
                "field_4": "data",
                "field_5": 42,
                "field_6": [1, 2, 3],
                "common_field": 2,
                "meta_position": 1,
            },
            "2": {
                "field_4": "data",
                "field_5": 42,
                "field_6": [1, 2, 3],
                "common_field": 3,
                "meta_position": 1,
            },
        },
    }
def test_mapped_fields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": [
            {
                "collection": "a",
                "ids": [1],
                "mapped_fields": ["field_1"]
            },
            {
                "collection": "b",
                "ids": [1, 2],
                "mapped_fields": ["field_4", "field_5"],
            },
        ],
        "mapped_fields": ["common_field"],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {
        "a/1": {
            "field_1": "data",
            "common_field": 1
        },
        "b/1": {
            "field_4": "data",
            "field_5": 42,
            "common_field": 2
        },
        "b/2": {
            "field_4": "data",
            "field_5": 42,
            "common_field": 3
        },
    }
def test_complex(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    # (field_1 == 'data' and field_2 > 21) or (field_3 == False and not field_2 < 21)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {
                "or_filter": [
                    {
                        "and_filter": [
                            {"field": "field_1", "operator": "=", "value": "data"},
                            {"field": "field_2", "operator": ">", "value": 21},
                        ]
                    },
                    {
                        "and_filter": [
                            {"field": "field_3", "operator": "=", "value": False},
                            {
                                "not_filter": {
                                    "field": "field_2",
                                    "operator": "<",
                                    "value": 21,
                                }
                            },
                        ]
                    },
                ],
            },
        },
    )
    assert_success_response(response)
    assert response.json == list(data.values())
def test_simple(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(Route.GET_EVERYTHING.URL, {})
    assert_success_response(response)
    assert response.json == {
        "a": [get_data_with_id("a/1")],
        "b": [get_data_with_id("b/1")],
    }
def test_only_deleted(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, 2)
    response = json_client.post(
        Route.GET_ALL.URL,
        {"collection": "a", "get_deleted_models": DeletedModelsBehaviour.ONLY_DELETED},
    )
    assert_success_response(response)
    assert response.json == {"2": data["a/2"]}
def test_only_invalid_fqids(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": [{"collection": "b", "ids": [3]}, {"collection": "c", "ids": [1]}],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {"b": {}, "c": {}}
def test_list_of_fqfields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": ["a/1/field_1", "c/1/f"],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {"a": {"1": {"field_1": "data"}}, "c": {}}
def test_filter_none_values(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": ["b/1/not_existent_field"],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {"b": {"1": {}}}
def test_deleted_all_models(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, 2)
    response = json_client.post(
        Route.GET_ALL.URL,
        {"collection": "a", "get_deleted_models": DeletedModelsBehaviour.ALL_MODELS},
    )
    assert_success_response(response)
    assert response.json == {"1": data["a/1"], "2": data["a/2"]}
def test_only_deleted(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.GET_EVERYTHING.URL,
        {"get_deleted_models": DeletedModelsBehaviour.ONLY_DELETED},
    )
    assert_success_response(response)
    assert response.json == {"a": [get_data_with_id("a/2")]}
Пример #13
0
def test_mapped_fields_filter_none_values(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, {FQID: data})
    response = json_client.post(Route.GET.URL, {
        "fqid": FQID,
        "mapped_fields": ["field_that_doesnt_exist"]
    })
    assert_success_response(response)
    assert response.json == {}
def test_deleted_not_deleted(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": default_request_parts,
        "get_deleted_models": DeletedModelsBehaviour.ONLY_DELETED,
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {"a": {}, "b": {}}
Пример #15
0
def test_position_mapped_fields(json_client, db_connection, db_cur):
    setup_events_data(db_connection, db_cur)
    response = json_client.post(Route.GET.URL, {
        "fqid": FQID,
        "position": 1,
        "mapped_fields": ["field_1"]
    })
    assert_success_response(response)
    assert response.json == {"field_1": "data"}
def test_fqfields_same_fqid(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": ["b/1/field_4", "b/1/field_5"],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {
        "b": {"1": {"field_4": "data", "field_5": 42}},
    }
def test_empty_field(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {"field": "empty", "operator": "=", "value": "data"},
        },
    )
    assert_success_response(response)
    assert response.json == []
def test_false(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.EXISTS.URL,
        {
            "collection": "a",
            "filter": {"field": "field_1", "operator": "=", "value": "doesnt_exist"},
        },
    )
    assert_success_response(response)
    assert response.json["exists"] is False
Пример #19
0
def test_mapped_fields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, {FQID: data})
    response = json_client.post(Route.GET.URL, {
        "fqid": FQID,
        "mapped_fields": ["fqid", "field_3"]
    })
    assert_success_response(response)
    assert response.json == {
        "fqid": FQID,
        "field_3": [1, 2, 3],
    }
def test_mapped_fields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.GET_ALL.URL,
        {"collection": "a", "mapped_fields": ["field_4", "meta_position"]},
    )
    assert_success_response(response)
    assert response.json == {
        "1": {"field_4": "data", "meta_position": 2},
        "2": {"field_4": "data", "meta_position": 3},
    }
Пример #21
0
def test_get_no_deleted_success(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, {FQID: data})
    response = json_client.post(
        Route.GET.URL,
        {
            "fqid": FQID,
            "get_deleted_models": DeletedModelsBehaviour.NO_DELETED
        },
    )
    assert_success_response(response)
    assert response.json == data
def test_neq(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {"field": "field_2", "operator": "!=", "value": 21},
        },
    )
    assert_success_response(response)
    assert response.json == [data["a/1"]]
Пример #23
0
def test_get_all_models_deleted(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, {FQID: data}, True)
    response = json_client.post(
        Route.GET.URL,
        {
            "fqid": FQID,
            "get_deleted_models": DeletedModelsBehaviour.ALL_MODELS
        },
    )
    assert_success_response(response)
    assert response.json == data
def test_leq(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {"field": "field_2", "operator": "<=", "value": 42},
        },
    )
    assert_success_response(response)
    assert response.json == list(data.values())
def test_deleted_all_models(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.GET_EVERYTHING.URL,
        {"get_deleted_models": DeletedModelsBehaviour.ALL_MODELS},
    )
    assert_success_response(response)
    assert response.json == {
        "a": [get_data_with_id("a/1"),
              get_data_with_id("a/2")],
        "b": [get_data_with_id("b/1")],
    }
def test_mapped_fields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {"field": "field_1", "operator": "=", "value": "data"},
            "mapped_fields": ["field_3", "meta_position"],
        },
    )
    assert_success_response(response)
    assert response.json == [{"field_3": True, "meta_position": 1}]
def test_partial_mapped_fields(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur)
    request = {
        "requests": [
            {"collection": "a", "ids": [1], "mapped_fields": ["field_1"]},
            {"collection": "b", "ids": [1]},
        ],
    }
    response = json_client.post(Route.GET_MANY.URL, request)
    assert_success_response(response)
    assert response.json == {
        "a": {"1": {"field_1": "data"}},
        "b": {"1": data["b"]["1"]},
    }
Пример #28
0
def test_true(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, data)
    response = json_client.post(
        Route.EXISTS.URL,
        {
            "collection": "a",
            "filter": {"field": "field_1", "operator": "=", "value": "data"},
        },
    )
    assert_success_response(response)
    assert response.json == {
        "exists": True,
        "position": 3,
    }
def test_gt(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, data)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {
                "field": "field_2",
                "operator": ">",
                "value": 21
            },
        },
    )
    assert_success_response(response)
    assert response.json == {"data": {"1": data["a/1"]}, "position": 3}
def test_eq_none(json_client, db_connection, db_cur):
    setup_data(db_connection, db_cur, data)
    response = json_client.post(
        Route.FILTER.URL,
        {
            "collection": "a",
            "filter": {
                "field": "field_not_none",
                "operator": "=",
                "value": None
            },
        },
    )
    assert_success_response(response)
    assert response.json == {"data": {"2": data["a/2"]}, "position": 3}