File: test_tutorial.py

package info (click to toggle)
lookatme 2.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,416 kB
  • sloc: python: 3,497; sh: 291; makefile: 16
file content (70 lines) | stat: -rw-r--r-- 1,655 bytes parent folder | download | duplicates (2)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Test tutorial functionality
"""


import inspect

import lookatme.tutorial as tutorial


def test_real_tutorials_exist():
    assert "general" in tutorial.GROUPED_TUTORIALS
    assert "markdown" in tutorial.GROUPED_TUTORIALS


def test_tutorial_basic(mocker):
    """Test that tutorials work correctly
    """
    mocker.patch("lookatme.tutorial.GROUPED_TUTORIALS", {})
    mocker.patch("lookatme.tutorial.NAMED_TUTORIALS", {})

    @tutorial.tutor("category", "name", "contents")
    def some_function():
        pass

    assert "category" in tutorial.GROUPED_TUTORIALS
    assert "name" in tutorial.GROUPED_TUTORIALS["category"]

    category_md = tutorial.get_tutorial_md(["category"])
    assert category_md is not None

    name_md = tutorial.get_tutorial_md(["name"])
    assert name_md is not None

    assert category_md == name_md
    assert "# Category: Name" in category_md
    assert "contents" in category_md


def test_tutor(mocker):
    mocker.patch("lookatme.config.STYLE", {"test": {"test": "hello"}})
    tutor = tutorial.Tutor(
        "name",
        "group",
        "\n".join([
            "<TUTOR:EXAMPLE>contents</TUTOR:EXAMPLE>",
            "<TUTOR:STYLE>test</TUTOR:STYLE>",
        ]),
        impl_fn=lambda _: 10,
        order=99999,
    )

    md_text = tutor.get_md()

    md_example = "> ~~~markdown\n> contents\n> ~~~"
    assert md_example in md_text

    md_rendered = "\ncontents"
    assert md_rendered in md_text

    style_yaml = inspect.cleandoc("""
        ```yaml
        ---
        styles:
          test:
            test: hello
        ---
        ```
    """).strip()
    assert style_yaml in md_text