"""Tests for the revealhelp preprocessor""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. from IPython.nbformat import current as nbformat from .base import PreprocessorTestsBase from ..revealhelp import RevealHelpPreprocessor class Testrevealhelp(PreprocessorTestsBase): """Contains test functions for revealhelp.py""" def build_notebook(self): """Build a reveal slides notebook in memory for use with tests. Overrides base in PreprocessorTestsBase""" outputs = [nbformat.new_output(output_type="stream", stream="stdout", output_text="a")] slide_metadata = {'slideshow' : {'slide_type': 'slide'}} subslide_metadata = {'slideshow' : {'slide_type': 'subslide'}} cells=[nbformat.new_code_cell(input="", prompt_number=1, outputs=outputs), nbformat.new_text_cell('markdown', source="", metadata=slide_metadata), nbformat.new_code_cell(input="", prompt_number=2, outputs=outputs), nbformat.new_text_cell('markdown', source="", metadata=slide_metadata), nbformat.new_text_cell('markdown', source="", metadata=subslide_metadata)] worksheets = [nbformat.new_worksheet(cells=cells)] return nbformat.new_notebook(name="notebook1", worksheets=worksheets) def build_preprocessor(self): """Make an instance of a preprocessor""" preprocessor = RevealHelpPreprocessor() preprocessor.enabled = True return preprocessor def test_constructor(self): """Can a RevealHelpPreprocessor be constructed?""" self.build_preprocessor() def test_reveal_attribute(self): """Make sure the reveal url_prefix resources is set""" nb = self.build_notebook() res = self.build_resources() preprocessor = self.build_preprocessor() nb, res = preprocessor(nb, res) assert 'reveal' in res assert 'url_prefix' in res['reveal'] def test_reveal_output(self): """Make sure that the reveal preprocessor """ nb = self.build_notebook() res = self.build_resources() preprocessor = self.build_preprocessor() nb, res = preprocessor(nb, res) cells = nb.worksheets[0].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 'slide_helper' in cells[1].metadata self.assertEqual(cells[1].metadata['slide_helper'], '-') # Verify 'slide-end' assert 'slide_helper' in cells[0].metadata self.assertEqual(cells[0].metadata['slide_helper'], 'slide_end') assert 'slide_helper' in cells[2].metadata self.assertEqual(cells[2].metadata['slide_helper'], 'slide_end') assert 'slide_helper' in cells[3].metadata self.assertEqual(cells[3].metadata['slide_helper'], 'subslide_end')