test_slides.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """Tests for SlidesExporter"""
  2. # Copyright (c) IPython Development Team.
  3. # Distributed under the terms of the Modified BSD License.
  4. from nbformat import v4 as nbformat
  5. from .base import ExportersTestsBase
  6. from ..slides import SlidesExporter, prepare
  7. class TestSlidesExporter(ExportersTestsBase):
  8. """Tests for SlidesExporter"""
  9. exporter_class = SlidesExporter
  10. should_include_raw = ['html']
  11. def test_constructor(self):
  12. """
  13. Can a SlidesExporter be constructed?
  14. """
  15. SlidesExporter()
  16. def test_export(self):
  17. """
  18. Can a SlidesExporter export something?
  19. """
  20. (output, resources) = SlidesExporter().from_filename(self._get_notebook())
  21. assert len(output) > 0
  22. def test_export_reveal(self):
  23. """
  24. Can a SlidesExporter export using the 'reveal' template?
  25. """
  26. (output, resources) = SlidesExporter(template_file='slides_reveal').from_filename(self._get_notebook())
  27. assert len(output) > 0
  28. def build_notebook(self):
  29. """Build a reveal slides notebook in memory for use with tests."""
  30. outputs = [nbformat.new_output(output_type="stream", name="stdout", text="a")]
  31. slide_metadata = {'slideshow' : {'slide_type': 'slide'}}
  32. subslide_metadata = {'slideshow' : {'slide_type': 'subslide'}}
  33. fragment_metadata = {'slideshow' : {'slide_type': 'fragment'}}
  34. cells=[nbformat.new_code_cell(source="", execution_count=1, outputs=outputs),
  35. nbformat.new_markdown_cell(source="", metadata=slide_metadata),
  36. nbformat.new_code_cell(source="", execution_count=2, outputs=outputs),
  37. nbformat.new_markdown_cell(source="", metadata=slide_metadata),
  38. nbformat.new_markdown_cell(source="", metadata=subslide_metadata),
  39. nbformat.new_markdown_cell(source="", metadata=fragment_metadata),
  40. nbformat.new_code_cell(source="", execution_count=1, outputs=outputs)]
  41. return nbformat.new_notebook(cells=cells)
  42. def test_prepare(self):
  43. nb = self.build_notebook()
  44. nb = prepare(nb)
  45. cells = nb.cells
  46. # Make sure correct metadata tags are available on every cell.
  47. for cell in cells:
  48. assert 'slide_type' in cell.metadata
  49. # Make sure slide end is only applied to the cells preceeding slide
  50. # cells.
  51. assert not cells[1].metadata.get('slide_end', False)
  52. # Verify 'slide-end'
  53. assert cells[0].metadata['slide_end']
  54. assert cells[2].metadata['slide_end']
  55. assert cells[2].metadata['subslide_end']
  56. assert not cells[3].metadata.get('slide_end', False)
  57. assert cells[3].metadata['subslide_end']
  58. assert cells[-1].metadata['fragment_end']
  59. assert cells[-1].metadata['subslide_end']
  60. assert cells[-1].metadata['slide_end']