Skip to content

Commit f9bbe0e

Browse files
committed
Change to less brittle HTML tests
1 parent 25db1cd commit f9bbe0e

File tree

1 file changed

+24
-172
lines changed

1 file changed

+24
-172
lines changed

tests/test_altairplot.py

Lines changed: 24 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -77,177 +77,29 @@ def test_altairplotdirective(app: Sphinx) -> None:
7777
assert result.count(VEGAEMBED_JS_URL_DEFAULT)
7878
assert result.count(VEGALITE_JS_URL_DEFAULT)
7979
assert result.count(VEGA_JS_URL_DEFAULT)
80-
current_url = SCHEMA_URL # noqa: F841
81-
# TODO: use regex to cut down length & avoid hardcoded `SCHEMA_URL`
80+
assert SCHEMA_URL in result
81+
82+
assert 'id="index-rst-altair-source-0"' in result
83+
assert '<div id="index-rst-altair-plot-0"' not in result
84+
85+
assert 'id="index-rst-altair-source-1"' in result
86+
assert 'id="index-rst-altair-plot-1"' in result
87+
assert '"actions": {"editor": true, "source": true, "export": true}' in result
88+
89+
assert '<div id="index-rst-altair-plot-2">' in result
90+
assert '</div><div class="highlight-python notranslate">' in result
91+
92+
assert 'id="index-rst-altair-source-3"' in result
93+
assert "Data({" in result
94+
95+
assert '<div id="index-rst-altair-plot-4"' in result
96+
assert 'id="index-rst-altair-source-4"' not in result
97+
98+
assert "Click to show code" in result
99+
assert '<div id="index-rst-altair-plot-5"' in result
100+
101+
assert '<div id="index-rst-altair-plot-6"' in result
102+
assert '"actions": {"editor": true, "source": false, "export": false}' in result
82103

83104
assert result.count('class="test-class"') == 1
84-
block_no_output = """\
85-
<div class="highlight-python notranslate" id="index-rst-altair-source-0"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">altair</span> <span class="k">as</span> <span class="nn">alt</span>
86-
87-
<span class="n">data</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Data</span><span class="p">(</span>
88-
<span class="n">values</span><span class="o">=</span><span class="p">[</span>
89-
<span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="s2">&quot;A&quot;</span><span class="p">,</span> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mi">5</span><span class="p">},</span>
90-
<span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="s2">&quot;B&quot;</span><span class="p">,</span> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">},</span>
91-
<span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="s2">&quot;C&quot;</span><span class="p">,</span> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mi">6</span><span class="p">},</span>
92-
<span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="s2">&quot;D&quot;</span><span class="p">,</span> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mi">7</span><span class="p">},</span>
93-
<span class="p">{</span><span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="s2">&quot;E&quot;</span><span class="p">,</span> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mi">2</span><span class="p">},</span>
94-
<span class="p">]</span>
95-
<span class="p">)</span>
96-
</pre></div>
97-
</div>"""
98-
assert block_no_output in result
99-
100-
block_plot_1 = """\
101-
<div class="highlight-python notranslate" id="index-rst-altair-source-1"><div class="highlight"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">mark_bar</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
102-
<span class="n">x</span><span class="o">=</span><span class="s2">&quot;x:N&quot;</span><span class="p">,</span>
103-
<span class="n">y</span><span class="o">=</span><span class="s2">&quot;y:Q&quot;</span><span class="p">,</span>
104-
<span class="p">)</span>
105-
</pre></div>
106-
</div>
107-
108-
<div id="index-rst-altair-plot-1">
109-
<script>
110-
// embed when document is loaded, to ensure vega library is available
111-
// this works on all modern browsers, except IE8 and older
112-
document.addEventListener("DOMContentLoaded", function(event) {
113-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
114-
var opt = {
115-
"mode": "vega-lite",
116-
"renderer": "canvas",
117-
"actions": {"editor": true, "source": true, "export": true}
118-
};
119-
vegaEmbed('#index-rst-altair-plot-1', spec, opt).catch(console.err);
120-
});
121-
</script>
122-
</div>"""
123-
assert block_plot_1 in result
124-
125-
block_plot_2 = """\
126-
<div id="index-rst-altair-plot-2">
127-
<script>
128-
// embed when document is loaded, to ensure vega library is available
129-
// this works on all modern browsers, except IE8 and older
130-
document.addEventListener("DOMContentLoaded", function(event) {
131-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
132-
var opt = {
133-
"mode": "vega-lite",
134-
"renderer": "canvas",
135-
"actions": {"editor": true, "source": true, "export": true}
136-
};
137-
vegaEmbed('#index-rst-altair-plot-2', spec, opt).catch(console.err);
138-
});
139-
</script>
140-
</div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">mark_bar</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
141-
<span class="n">x</span><span class="o">=</span><span class="s2">&quot;x:N&quot;</span><span class="p">,</span>
142-
<span class="n">y</span><span class="o">=</span><span class="s2">&quot;y:Q&quot;</span><span class="p">,</span>
143-
<span class="p">)</span>
144-
</pre></div>
145-
</div>"""
146-
assert block_plot_2 in result
147-
148-
block_3 = """\
149-
<div class="highlight-python notranslate" id="index-rst-altair-source-3"><div class="highlight"><pre><span></span><span class="n">data</span>
150-
</pre></div>
151-
</div>
152-
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> Data({
153-
values: [{&#39;x&#39;: &#39;A&#39;, &#39;y&#39;: 5}, {&#39;x&#39;: &#39;B&#39;, &#39;y&#39;: 3}, {&#39;x&#39;: &#39;C&#39;, &#39;y&#39;: 6}, {&#39;x&#39;: &#39;D&#39;, &#39;y&#39;: 7}, {&#39;x&#39;: &#39;E&#39;, &#39;y&#39;: 2}]
154-
})
155-
</pre></div>
156-
</div>"""
157-
assert block_3 in result
158-
159-
block_plot_4 = """\
160-
<p>No code should be shown, only the plot.</p>
161-
162-
<div id="index-rst-altair-plot-4">
163-
<script>
164-
// embed when document is loaded, to ensure vega library is available
165-
// this works on all modern browsers, except IE8 and older
166-
document.addEventListener("DOMContentLoaded", function(event) {
167-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
168-
var opt = {
169-
"mode": "vega-lite",
170-
"renderer": "canvas",
171-
"actions": {"editor": true, "source": true, "export": true}
172-
};
173-
vegaEmbed('#index-rst-altair-plot-4', spec, opt).catch(console.err);
174-
});
175-
</script>
176-
</div>"""
177-
assert block_plot_4 in result
178-
179-
block_plot_5 = """\
180-
<p>The code should be hidden and can be expanded.</p>
181-
<details><summary><a>Click to show code</a></summary><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">mark_bar</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
182-
<span class="n">x</span><span class="o">=</span><span class="s2">&quot;x:N&quot;</span><span class="p">,</span>
183-
<span class="n">y</span><span class="o">=</span><span class="s2">&quot;y:Q&quot;</span><span class="p">,</span>
184-
<span class="p">)</span>
185-
</pre></div>
186-
</div>
187-
</details>
188-
<div id="index-rst-altair-plot-5">
189-
<script>
190-
// embed when document is loaded, to ensure vega library is available
191-
// this works on all modern browsers, except IE8 and older
192-
document.addEventListener("DOMContentLoaded", function(event) {
193-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
194-
var opt = {
195-
"mode": "vega-lite",
196-
"renderer": "canvas",
197-
"actions": {"editor": true, "source": true, "export": true}
198-
};
199-
vegaEmbed('#index-rst-altair-plot-5', spec, opt).catch(console.err);
200-
});
201-
</script>
202-
</div>"""
203-
assert block_plot_5 in result
204-
205-
block_plot_6 = """\
206-
<div class="highlight-python notranslate" id="index-rst-altair-source-6"><div class="highlight"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">mark_bar</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
207-
<span class="n">x</span><span class="o">=</span><span class="s2">&quot;x:N&quot;</span><span class="p">,</span>
208-
<span class="n">y</span><span class="o">=</span><span class="s2">&quot;y:Q&quot;</span><span class="p">,</span>
209-
<span class="p">)</span>
210-
</pre></div>
211-
</div>
212-
213-
<div id="index-rst-altair-plot-6">
214-
<script>
215-
// embed when document is loaded, to ensure vega library is available
216-
// this works on all modern browsers, except IE8 and older
217-
document.addEventListener("DOMContentLoaded", function(event) {
218-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
219-
var opt = {
220-
"mode": "vega-lite",
221-
"renderer": "canvas",
222-
"actions": {"editor": true, "source": false, "export": false}
223-
};
224-
vegaEmbed('#index-rst-altair-plot-6', spec, opt).catch(console.err);
225-
});
226-
</script>
227-
</div>"""
228-
assert block_plot_6 in result
229-
230-
block_plot_7 = """\
231-
<div class="highlight-python notranslate" id="index-rst-altair-source-7"><div class="highlight"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">mark_bar</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
232-
<span class="n">x</span><span class="o">=</span><span class="s2">&quot;x:N&quot;</span><span class="p">,</span>
233-
<span class="n">y</span><span class="o">=</span><span class="s2">&quot;y:Q&quot;</span><span class="p">,</span>
234-
<span class="p">)</span>
235-
</pre></div>
236-
</div>
237-
238-
<div id="index-rst-altair-plot-7" class="test-class">
239-
<script>
240-
// embed when document is loaded, to ensure vega library is available
241-
// this works on all modern browsers, except IE8 and older
242-
document.addEventListener("DOMContentLoaded", function(event) {
243-
var spec = {"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}}, "data": {"values": [{"x": "A", "y": 5}, {"x": "B", "y": 3}, {"x": "C", "y": 6}, {"x": "D", "y": 7}, {"x": "E", "y": 2}]}, "mark": {"type": "bar"}, "encoding": {"x": {"field": "x", "type": "nominal"}, "y": {"field": "y", "type": "quantitative"}}, "$schema": "https://vega.github.io/schema/vega-lite/v5.20.1.json"};
244-
var opt = {
245-
"mode": "vega-lite",
246-
"renderer": "canvas",
247-
"actions": {"editor": true, "source": true, "export": true}
248-
};
249-
vegaEmbed('#index-rst-altair-plot-7', spec, opt).catch(console.err);
250-
});
251-
</script>
252-
</div>"""
253-
assert block_plot_7 in result
105+
assert '<div id="index-rst-altair-plot-7" class="test-class">' in result

0 commit comments

Comments
 (0)