Issues (74)

tests/integrations/test_flask.py (3 issues)

1
from flask import Flask
2
3
from lagom import injectable, Container
4
from lagom.integrations.flask import FlaskIntegration
5
6
7
class ComplexDep:
8
    def __init__(self, message):
9
        self.message = message
10
11
12
def test_flask_container_provides_a_route_decorator(container: Container):
13
    app = Flask(__name__)
14
    container[ComplexDep] = ComplexDep("hello from dep")
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable ComplexDep does not seem to be defined.
Loading history...
15
16
    flask_integration = FlaskIntegration(app, container)
17
18
    @flask_integration.route("/")
19
    def _some_handler(dep: ComplexDep = injectable):
20
        return dep.message
21
22
    with app.test_client() as client:
23
        resp = client.get("/")
24
        assert resp.get_data(as_text=True) == "hello from dep"
25
26
27
def test_the_route_decorator_can_have_request_level_singletons(container: Container):
28
    app = Flask(__name__)
29
    container[ComplexDep] = lambda: ComplexDep("hello from dep")
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable ComplexDep does not seem to be defined.
Loading history...
30
31
    flask_integration = FlaskIntegration(
32
        app, container, request_singletons=[ComplexDep]
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable ComplexDep does not seem to be defined.
Loading history...
33
    )
34
35
    @flask_integration.route("/")
36
    def _some_handler(
37
        dep_one: ComplexDep = injectable, dep_two: ComplexDep = injectable
38
    ):
39
        return "singleton" if dep_one is dep_two else "nope"
40
41
    with app.test_client() as client:
42
        resp = client.get("/")
43
        assert resp.get_data(as_text=True) == "singleton"
44