File: test_json.py

package info (click to toggle)
flask-mongoengine 1.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 508 kB
  • sloc: python: 2,127; makefile: 109
file content (43 lines) | stat: -rw-r--r-- 1,304 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import flask
import pytest

from flask_mongoengine import MongoEngine


@pytest.fixture()
def extended_db(app):
    app.json_encoder = DummyEncoder
    app.config["MONGODB_HOST"] = "mongodb://localhost:27017/flask_mongoengine_test_db"
    test_db = MongoEngine(app)
    db_name = test_db.connection.get_database("flask_mongoengine_test_db").name

    if not db_name.endswith("_test_db"):
        raise RuntimeError(
            f"DATABASE_URL must point to testing db, not to master db ({db_name})"
        )

    # Clear database before tests, for cases when some test failed before.
    test_db.connection.drop_database(db_name)

    yield test_db

    # Clear database after tests, for graceful exit.
    test_db.connection.drop_database(db_name)


class DummyEncoder(flask.json.JSONEncoder):
    """
    An example encoder which a user may create and override
    the apps json_encoder with.
    This class is a NO-OP, but used to test proper inheritance.
    """


@pytest.mark.usefixtures("extended_db")
def test_inheritance(app):
    assert issubclass(app.json_encoder, DummyEncoder)
    json_encoder_name = app.json_encoder.__name__

    # Since the class is dynamically derrived, must compare class names
    # rather than class objects.
    assert json_encoder_name == "MongoEngineJSONEncoder"