"""Base TestCase class for testing Exporters"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.

import os

from tests.base import TestsBase

all_raw_mimetypes = {
    "text/x-python",
    "text/markdown",
    "text/html",
    "text/restructuredtext",
    "text/latex",
}


class ExportersTestsBase(TestsBase):
    """Contains base test functions for exporters"""

    exporter_class = None
    should_include_raw = None

    def _get_notebook(self, nb_name="notebook2.ipynb"):
        return os.path.join(self._get_files_path(), nb_name)

    def test_raw_cell_inclusion(self):
        """test raw cell inclusion based on raw_mimetype metadata"""
        if self.should_include_raw is None:
            return
        exporter = self.exporter_class()
        (output, resources) = exporter.from_filename(self._get_notebook("rawtest.ipynb"))
        for inc in self.should_include_raw:
            self.assertIn("raw %s" % inc, output, "should include %s" % inc)
        self.assertIn("no raw_mimetype metadata", output)
        for exc in all_raw_mimetypes.difference(self.should_include_raw):
            self.assertNotIn("raw %s" % exc, output, "should exclude %s" % exc)
        self.assertNotIn("never be included", output)
