Skip to content

Commit c7c2348

Browse files
committed
tests: use syrupy for snapshot tests
1 parent 1a502b4 commit c7c2348

File tree

4 files changed

+218
-5
lines changed

4 files changed

+218
-5
lines changed

quartodoc/renderers/md_renderer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,9 @@ def render(self, el: Union[layout.DocClass, layout.DocModule]):
285285
objs = f"{sub_header} {section_name}\n\n{header}\n{_summary_table}"
286286
extra_parts.append(objs)
287287

288-
class_docs = [self.render(x) for x in raw_classes if isinstance(x, layout.Doc)]
288+
n_incr = 1 if el.flat else 2
289+
with self._increment_header(n_incr):
290+
class_docs = [self.render(x) for x in raw_classes if isinstance(x, layout.Doc)]
289291

290292
# method summary table ----
291293
if raw_meths:
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
# serializer version: 1
2+
# name: test_render_doc_class[embedded]
3+
'''
4+
# quartodoc.tests.example_class.C { #quartodoc.tests.example_class.C }
5+
6+
`tests.example_class.C(self, x, y)`
7+
8+
The short summary.
9+
10+
The extended summary,
11+
which may be multiple lines.
12+
13+
## Parameters
14+
15+
| Name | Type | Description | Default |
16+
|--------|--------|----------------------|------------|
17+
| `x` | str | Uses signature type. | _required_ |
18+
| `y` | int | Uses manual type. | _required_ |
19+
20+
## Attributes
21+
22+
| Name | Description |
23+
| --- | --- |
24+
| [SOME_ATTRIBUTE](#quartodoc.tests.example_class.C.SOME_ATTRIBUTE) | An attribute |
25+
| [some_property](#quartodoc.tests.example_class.C.some_property) | A property |
26+
| [x](#quartodoc.tests.example_class.C.x) | |
27+
| [y](#quartodoc.tests.example_class.C.y) | |
28+
| [z](#quartodoc.tests.example_class.C.z) | |
29+
30+
## Methods
31+
32+
| Name | Description |
33+
| --- | --- |
34+
| [some_method](#quartodoc.tests.example_class.C.some_method) | A method |
35+
36+
### some_method { #quartodoc.tests.example_class.C.some_method }
37+
38+
`tests.example_class.C.some_method(self)`
39+
40+
A method
41+
'''
42+
# ---
43+
# name: test_render_doc_class[flat]
44+
'''
45+
# quartodoc.tests.example_class.C { #quartodoc.tests.example_class.C }
46+
47+
`tests.example_class.C(self, x, y)`
48+
49+
The short summary.
50+
51+
The extended summary,
52+
which may be multiple lines.
53+
54+
## Parameters
55+
56+
| Name | Type | Description | Default |
57+
|--------|--------|----------------------|------------|
58+
| `x` | str | Uses signature type. | _required_ |
59+
| `y` | int | Uses manual type. | _required_ |
60+
61+
## Attributes
62+
63+
| Name | Description |
64+
| --- | --- |
65+
| [SOME_ATTRIBUTE](#quartodoc.tests.example_class.C.SOME_ATTRIBUTE) | An attribute |
66+
| [some_property](#quartodoc.tests.example_class.C.some_property) | A property |
67+
| [x](#quartodoc.tests.example_class.C.x) | |
68+
| [y](#quartodoc.tests.example_class.C.y) | |
69+
| [z](#quartodoc.tests.example_class.C.z) | |
70+
71+
## Methods
72+
73+
| Name | Description |
74+
| --- | --- |
75+
| [some_method](#quartodoc.tests.example_class.C.some_method) | A method |
76+
77+
## some_method { #quartodoc.tests.example_class.C.some_method }
78+
79+
`tests.example_class.C.some_method(self)`
80+
81+
A method
82+
'''
83+
# ---
84+
# name: test_render_doc_class_attributes_section
85+
'''
86+
# quartodoc.tests.example_class.AttributesTable { #quartodoc.tests.example_class.AttributesTable }
87+
88+
`tests.example_class.AttributesTable(self)`
89+
90+
The short summary.
91+
92+
## Attributes
93+
94+
| Name | Type | Description |
95+
|--------|--------|---------------------|
96+
| x | str | Uses signature type |
97+
| y | int | Uses manual type |
98+
| z | float | Defined in init |
99+
'''
100+
# ---
101+
# name: test_render_doc_module[embedded]
102+
'''
103+
# quartodoc.tests.example { #quartodoc.tests.example }
104+
105+
`tests.example`
106+
107+
A module
108+
109+
## Attributes
110+
111+
| Name | Description |
112+
| --- | --- |
113+
| [a_attr](#quartodoc.tests.example.a_attr) | An attribute |
114+
115+
## Classes
116+
117+
| Name | Description |
118+
| --- | --- |
119+
| [AClass](#quartodoc.tests.example.AClass) | |
120+
121+
## Functions
122+
123+
| Name | Description |
124+
| --- | --- |
125+
| [a_alias](#quartodoc.tests.example.a_alias) | An alias target |
126+
| [a_func](#quartodoc.tests.example.a_func) | A function |
127+
128+
### a_alias { #quartodoc.tests.example.a_alias }
129+
130+
`tests.example.a_alias()`
131+
132+
An alias target
133+
134+
### a_func { #quartodoc.tests.example.a_func }
135+
136+
`tests.example.a_func()`
137+
138+
A function
139+
140+
### AClass { #quartodoc.tests.example.AClass }
141+
142+
`tests.example.AClass()`
143+
'''
144+
# ---
145+
# name: test_render_doc_module[flat]
146+
'''
147+
# quartodoc.tests.example { #quartodoc.tests.example }
148+
149+
`tests.example`
150+
151+
A module
152+
153+
## Attributes
154+
155+
| Name | Description |
156+
| --- | --- |
157+
| [a_attr](#quartodoc.tests.example.a_attr) | An attribute |
158+
159+
## Classes
160+
161+
| Name | Description |
162+
| --- | --- |
163+
| [AClass](#quartodoc.tests.example.AClass) | |
164+
165+
## Functions
166+
167+
| Name | Description |
168+
| --- | --- |
169+
| [a_alias](#quartodoc.tests.example.a_alias) | An alias target |
170+
| [a_func](#quartodoc.tests.example.a_func) | A function |
171+
172+
## a_alias { #quartodoc.tests.example.a_alias }
173+
174+
`tests.example.a_alias()`
175+
176+
An alias target
177+
178+
## a_func { #quartodoc.tests.example.a_func }
179+
180+
`tests.example.a_func()`
181+
182+
A function
183+
184+
## AClass { #quartodoc.tests.example.AClass }
185+
186+
`tests.example.AClass()`
187+
'''
188+
# ---

quartodoc/tests/test_renderers.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import griffe.expressions as exp
44

55
from quartodoc.renderers import MdRenderer
6-
from quartodoc import get_object
6+
from quartodoc import Auto, blueprint, get_object
77

88

99
@pytest.fixture
@@ -65,13 +65,35 @@ def test_render_table_description_interlink(renderer, pair):
6565

6666
def test_render_doc_attribute(renderer):
6767
attr = ds.DocstringAttribute(
68-
name = "abc",
68+
name="abc",
6969
description="xyz",
7070
annotation=exp.Expression(exp.Name("Optional", full="Optional"), "[", "]"),
71-
value=1
71+
value=1,
7272
)
7373

7474
res = renderer.render(attr)
7575

76-
assert res == ["abc", "Optional\[\]", "xyz"]
76+
assert res == ["abc", r"Optional\[\]", "xyz"]
7777

78+
79+
@pytest.mark.parametrize("children", ["embedded", "flat"])
80+
def test_render_doc_module(snapshot, renderer, children):
81+
bp = blueprint(Auto(name="quartodoc.tests.example", children=children))
82+
res = renderer.render(bp)
83+
84+
assert res == snapshot
85+
86+
87+
@pytest.mark.parametrize("children", ["embedded", "flat"])
88+
def test_render_doc_class(snapshot, renderer, children):
89+
bp = blueprint(Auto(name="quartodoc.tests.example_class.C", children=children))
90+
res = renderer.render(bp)
91+
92+
assert res == snapshot
93+
94+
95+
def test_render_doc_class_attributes_section(snapshot, renderer):
96+
bp = blueprint(Auto(name="quartodoc.tests.example_class.AttributesTable"))
97+
res = renderer.render(bp)
98+
99+
assert res == snapshot

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ dev =
3939
pytest
4040
jupyterlab
4141
jupytext
42+
syrupy
4243

4344
[options.entry_points]
4445
console_scripts =

0 commit comments

Comments
 (0)