Exemple #1
0
def test_build_model_from_events_no_first_create_event(
        read_database: ReadDatabase):
    with pytest.raises(AssertionError):
        read_database.build_model_from_events([{
            "type": MagicMock(),
            "data": MagicMock()
        }])
Exemple #2
0
def test_get_connection(read_database: ReadDatabase):
    connection = MagicMock()
    connection.get_connection_context = MagicMock(return_value="test")
    read_database.connection = connection

    assert read_database.get_context() == "test"
    connection.get_connection_context.assert_called()
Exemple #3
0
def test_get_invalid(read_database: ReadDatabase):
    fqid = "c/1"
    read_database.get_many = q = MagicMock(return_value={})

    with pytest.raises(ModelDoesNotExist):
        read_database.get(fqid, [])

    assert q.call_args.args[0] == [fqid]
Exemple #4
0
def test_delete_models(read_database: ReadDatabase,
                       connection: ConnectionHandler):
    fqids = (
        MagicMock(),
        MagicMock(),
    )
    connection.execute = e = MagicMock()

    read_database.delete_models(fqids)

    assert e.call_args.args[1] == [fqids]
Exemple #5
0
def test_build_model_from_events_unknown_event(read_database: ReadDatabase):
    with pytest.raises(BadCodingError):
        read_database.build_model_from_events([
            {
                "type": EVENT_TYPES.CREATE,
                "data": MagicMock()
            },
            {
                "type": MagicMock(),
                "data": MagicMock()
            },
        ])
Exemple #6
0
def test_build_model_ignore_deleted_invalid_fqid(
        read_database: ReadDatabase, connection: ConnectionHandler):
    fqid = MagicMock()
    events = [{"fqid": MagicMock()}]
    model = MagicMock()
    connection.query = q = MagicMock(return_value=events)
    read_database.build_model_from_events = bmfe = MagicMock(
        return_value=model)

    with pytest.raises(ModelDoesNotExist):
        read_database.build_model_ignore_deleted(fqid)

    assert q.call_args.args[1] == [(fqid, )]
    bmfe.assert_called_with(events)
Exemple #7
0
def test_create_or_update_models(read_database: ReadDatabase,
                                 connection: ConnectionHandler):
    fqid1 = MagicMock()
    model1 = MagicMock()
    fqid2 = MagicMock()
    model2 = MagicMock()
    models = {fqid1: model1, fqid2: model2}
    connection.execute = e = MagicMock()
    read_database.json = lambda x: x

    read_database.create_or_update_models(models)

    args = e.call_args.args[1]
    assert (args == [fqid1, model1, fqid2, model2
                     ]) or (args == [fqid2, model2, fqid1, model1])
Exemple #8
0
def test_get_many(
    read_database: ReadDatabase,
    connection: ConnectionHandler,
    query_helper: SqlQueryHelper,
):
    fqid1 = "c/1"
    model1 = MagicMock()
    fqid2 = "c/2"
    model2 = MagicMock()
    connection.query = q = MagicMock(return_value=[{
        "fqid": fqid1,
        "data": model1
    }, {
        "fqid": fqid2,
        "data": model2
    }])

    q_fqid1 = MagicMock()
    q_fqid2 = MagicMock()
    models = read_database.get_many([q_fqid1, q_fqid2])

    assert q.call_args.args[1] == [(
        q_fqid1,
        q_fqid2,
    )]
    assert models == {fqid1: model1, fqid2: model2}
def test_get_many_no_fqids(read_database: ReadDatabase,
                           connection: ConnectionHandler):
    connection.query = q = MagicMock()

    assert read_database.get_many([], {}) == {}

    assert q.call_count == 0
Exemple #10
0
def test_json(read_database: ReadDatabase, connection: ConnectionHandler):
    value = MagicMock()
    connection.to_json = tj = MagicMock(return_value=value)
    data = MagicMock()

    assert read_database.json(data) == value
    tj.assert_called_with(data)
Exemple #11
0
def test_get_all(read_database: ReadDatabase):
    res = MagicMock()
    read_database.fetch_models = f = MagicMock(return_value=res)

    models = read_database.get_all("c", ["f"])

    f.assert_called()
    assert models == res
Exemple #12
0
def test_is_deleted(read_database: ReadDatabase):
    fqid = MagicMock()
    result = MagicMock()
    read_database.get_deleted_status = gds = MagicMock(
        return_value={fqid: result})

    assert read_database.is_deleted(fqid) == result
    assert gds.call_args.args[0] == [fqid]
Exemple #13
0
def test_filter(read_database: ReadDatabase):
    res = MagicMock()
    read_database.fetch_models = f = MagicMock(return_value=res)
    filter = FilterOperator("a", "=", "a")

    models = read_database.filter("c", filter, [])

    f.assert_called()
    assert models == res
Exemple #14
0
def test_get(read_database: ReadDatabase):
    fqid = "c/1"
    model = MagicMock()
    read_database.get_many = q = MagicMock(return_value={fqid: model})

    model = read_database.get(fqid, [])

    assert q.call_args.args[0] == [fqid]
    assert model == model
Exemple #15
0
def test_get_deleted_status_position(read_database: ReadDatabase,
                                     connection: ConnectionHandler):
    fqid = MagicMock()
    result = [{"fqid": fqid, "type": EVENT_TYPES.DELETE}]
    connection.query = q = MagicMock(return_value=result)

    assert read_database.get_deleted_status([fqid], 42) == {fqid: True}
    assert "from events" in q.call_args.args[0]
    assert q.call_args.args[1] == [(fqid, )]
Exemple #16
0
def test_get_deleted_status(read_database: ReadDatabase,
                            connection: ConnectionHandler):
    fqid = MagicMock()
    deleted = MagicMock()
    result = [{"fqid": fqid, "deleted": deleted}]
    connection.query = q = MagicMock(return_value=result)

    assert read_database.get_deleted_status([fqid]) == {fqid: deleted}
    assert "from models_lookup" in q.call_args.args[0]
    assert q.call_args.args[1] == [(fqid, )]
def test_get_everything(read_database: ReadDatabase,
                        connection: ConnectionHandler):
    res = [{"__fqid__": "a/2", "data": {}}, {"__fqid__": "a/1", "data": {}}]
    connection.query = f = MagicMock(return_value=res)

    models = read_database.get_everything(
        get_deleted_models=DeletedModelsBehaviour.ALL_MODELS)

    f.assert_called()
    assert models == {"a": [{"id": 1}, {"id": 2}]}
Exemple #18
0
def test_fetch_models_mapped_fields(read_database: ReadDatabase,
                                    connection: ConnectionHandler):
    args = [MagicMock(), MagicMock(), MagicMock()]
    row = MagicMock()
    row.copy = lambda: row
    connection.query = q = MagicMock(return_value=[row])

    models = read_database.fetch_models(*args, [1])

    q.assert_called_with(*args)
    assert list(models.values()) == [row]
Exemple #19
0
def test_aggregate(read_database: ReadDatabase, connection: ConnectionHandler):
    res = MagicMock()
    res.copy = lambda: res
    connection.query = q = MagicMock(return_value=[res])
    filter = FilterOperator("a", "=", "a")
    param = CountFilterQueryFieldsParameters()

    models = read_database.aggregate("c", filter, param)

    q.assert_called()
    assert models == res
Exemple #20
0
def test_fetch_models(read_database: ReadDatabase,
                      connection: ConnectionHandler):
    args = [MagicMock(), MagicMock(), MagicMock()]
    row = MagicMock()
    row["data"] = MagicMock()
    connection.query = q = MagicMock(return_value=[row])

    models = read_database.fetch_models(*args, [])

    q.assert_called_with(*args)
    assert list(models.values()) == [row["data"]]
Exemple #21
0
def test_build_models_from_result(read_database: ReadDatabase,
                                  query_helper: SqlQueryHelper):
    row = MagicMock()
    row["fqid"] = MagicMock()
    row.copy = lambda: row
    row.keys = MagicMock(return_value=[MagicMock()])
    mfpc = MagicMock()
    mfpc.__getitem__ = MagicMock(return_value=[MagicMock()])
    mfpc.__contains__ = MagicMock(return_value=True)

    query_helper.mapped_fields_map_has_empty_entry = MagicMock(
        return_value=False)

    result = read_database.build_models_from_result([row], mfpc)

    assert result == {row["fqid"]: row}
Exemple #22
0
def test_build_model_from_events_update_event(read_database: ReadDatabase):
    base_model = MagicMock()
    base_model.update = u = MagicMock()
    update_event = MagicMock()

    result = read_database.build_model_from_events([
        {
            "type": EVENT_TYPES.CREATE,
            "data": base_model
        },
        {
            "type": EVENT_TYPES.UPDATE,
            "data": update_event,
            "position": 0
        },
    ])

    u.assert_called_with(update_event)
    assert result == base_model
Exemple #23
0
def test_build_model_from_events_delete_fields_event(
        read_database: ReadDatabase):
    field = MagicMock()
    base_model = {field: MagicMock}
    delete_fields_event = [field]

    result = read_database.build_model_from_events([
        {
            "type": EVENT_TYPES.CREATE,
            "data": base_model
        },
        {
            "type": EVENT_TYPES.DELETE_FIELDS,
            "data": delete_fields_event,
            "position": 0,
        },
    ])

    assert result == {META_POSITION: 0}
Exemple #24
0
def test_build_model_ignore_deleted(read_database: ReadDatabase,
                                    connection: ConnectionHandler):
    fqid = MagicMock()
    events = [{
        "fqid": fqid,
        "data": MagicMock()
    }, {
        "fqid": fqid,
        "data": MagicMock()
    }]
    model = MagicMock()
    connection.query = q = MagicMock(return_value=events)
    read_database.build_model_from_events = bmfe = MagicMock(
        return_value=model)

    result = read_database.build_model_ignore_deleted(fqid)

    assert q.call_args.args[1] == [(fqid, )]
    bmfe.assert_called_with(events)
    assert result == model
Exemple #25
0
def test_build_model_from_events_no_events(read_database: ReadDatabase):
    with pytest.raises(BadCodingError):
        read_database.build_model_from_events(None)
    with pytest.raises(BadCodingError):
        read_database.build_model_from_events([])
def test_get_position(read_database: ReadDatabase,
                      connection: ConnectionHandler):
    connection.query_single_value = q = MagicMock(return_value=42)
    assert read_database.get_position() == 42
    q.asser_called_with("select max(position) from positions", [])
Exemple #27
0
def test_delete_models_no_models(read_database: ReadDatabase,
                                 connection: ConnectionHandler):
    connection.execute = e = MagicMock()
    read_database.delete_models([])
    e.assert_not_called()
Exemple #28
0
def test_is_deleted_invalid_fqid(read_database: ReadDatabase):
    read_database.get_deleted_status = MagicMock(return_value={})

    with pytest.raises(ModelDoesNotExist):
        read_database.is_deleted(MagicMock())