82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
|
"""Tests for SlidesExporter"""
|
||
|
|
||
|
# Copyright (c) IPython Development Team.
|
||
|
# Distributed under the terms of the Modified BSD License.
|
||
|
|
||
|
from nbformat import v4 as nbformat
|
||
|
from .base import ExportersTestsBase
|
||
|
from ..slides import SlidesExporter, _RevealMetadataPreprocessor
|
||
|
|
||
|
|
||
|
class TestSlidesExporter(ExportersTestsBase):
|
||
|
"""Tests for SlidesExporter"""
|
||
|
|
||
|
exporter_class = SlidesExporter
|
||
|
should_include_raw = ['html']
|
||
|
|
||
|
def test_constructor(self):
|
||
|
"""
|
||
|
Can a SlidesExporter be constructed?
|
||
|
"""
|
||
|
SlidesExporter()
|
||
|
|
||
|
|
||
|
def test_export(self):
|
||
|
"""
|
||
|
Can a SlidesExporter export something?
|
||
|
"""
|
||
|
(output, resources) = SlidesExporter().from_filename(self._get_notebook())
|
||
|
assert len(output) > 0
|
||
|
|
||
|
|
||
|
def test_export_reveal(self):
|
||
|
"""
|
||
|
Can a SlidesExporter export using the 'reveal' template?
|
||
|
"""
|
||
|
(output, resources) = SlidesExporter().from_filename(self._get_notebook())
|
||
|
assert len(output) > 0
|
||
|
|
||
|
def build_notebook(self):
|
||
|
"""Build a reveal slides notebook in memory for use with tests."""
|
||
|
outputs = [nbformat.new_output(output_type="stream", name="stdout", text="a")]
|
||
|
|
||
|
slide_metadata = {'slideshow' : {'slide_type': 'slide'}}
|
||
|
subslide_metadata = {'slideshow' : {'slide_type': 'subslide'}}
|
||
|
fragment_metadata = {'slideshow' : {'slide_type': 'fragment'}}
|
||
|
|
||
|
cells=[nbformat.new_code_cell(source="", execution_count=1, outputs=outputs),
|
||
|
nbformat.new_markdown_cell(source="", metadata=slide_metadata),
|
||
|
nbformat.new_code_cell(source="", execution_count=2, outputs=outputs),
|
||
|
nbformat.new_markdown_cell(source="", metadata=slide_metadata),
|
||
|
nbformat.new_markdown_cell(source="", metadata=subslide_metadata),
|
||
|
nbformat.new_markdown_cell(source="", metadata=fragment_metadata),
|
||
|
nbformat.new_code_cell(source="", execution_count=1, outputs=outputs)]
|
||
|
|
||
|
return nbformat.new_notebook(cells=cells)
|
||
|
|
||
|
def test_metadata_preprocessor(self):
|
||
|
preprocessor = _RevealMetadataPreprocessor()
|
||
|
nb = self.build_notebook()
|
||
|
nb, resources = preprocessor.preprocess(nb)
|
||
|
cells = nb.cells
|
||
|
|
||
|
# Make sure correct metadata tags are available on every cell.
|
||
|
for cell in cells:
|
||
|
assert 'slide_type' in cell.metadata
|
||
|
|
||
|
# Make sure slide end is only applied to the cells preceeding slide
|
||
|
# cells.
|
||
|
assert not cells[1].metadata.get('slide_end', False)
|
||
|
|
||
|
# Verify 'slide-end'
|
||
|
assert cells[0].metadata['slide_end']
|
||
|
assert cells[2].metadata['slide_end']
|
||
|
assert cells[2].metadata['subslide_end']
|
||
|
|
||
|
assert not cells[3].metadata.get('slide_end', False)
|
||
|
assert cells[3].metadata['subslide_end']
|
||
|
|
||
|
assert cells[-1].metadata['fragment_end']
|
||
|
assert cells[-1].metadata['subslide_end']
|
||
|
assert cells[-1].metadata['slide_end']
|