예제 #1
0
    def test_rendering_works(self):
        self._mock_portal_languages_tool()
        book = self._mock_book()
        builder = self.mocker.mock()

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertIn(r'My book', latex)
        self.assertIn(r'content latex', latex)
        self.assertIn(r'\maketitle', latex)
        self.assertIn(r'\tableofcontents', latex)
        self.assertIn(r'\listoffigures', latex)
        self.assertIn(r'\listoftables', latex)
        self.assertIn(r'\release{2.5}', latex)
        self.assertIn(r'\author{4teamwork}', latex)
        self.assertIn(r'\authoraddress{Bern\\Switzerland}', latex)
예제 #2
0
    def test_logo_without_width(self):
        self._mock_portal_languages_tool()
        book = self._mock_book({
            'titlepage_logo': 'my-image',
            'titlepage_logo_width': 0
        })
        builder = self.mocker.mock()

        self.expect(builder.add_file('titlepage_logo.jpg', data='my-image'))

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('tabulary.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertIn(
            r'\def\sphinxlogo{\includegraphics{' + \
                r'titlepage_logo.jpg}}',
            latex)
예제 #3
0
    def test_rendering_works(self):
        self._mock_portal_languages_tool()
        book = self._mock_book()
        builder = self.mocker.mock()

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('tabulary.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertIn(r'My book', latex)
        self.assertIn(r'content latex', latex)
        self.assertIn(r'\maketitle', latex)
        self.assertIn(r'\tableofcontents', latex)
        self.assertIn(r'\listoffigures', latex)
        self.assertIn(r'\listoftables', latex)
        self.assertIn(r'\release{2.5}', latex)
        self.assertIn(r'\author{4teamwork}', latex)
        self.assertIn(r'\authoraddress{Bern\\Switzerland}', latex)
예제 #4
0
    def test_logo_without_width(self):
        self._mock_portal_languages_tool()
        book = self._mock_book({
                'titlepage_logo': 'my-image',
                'titlepage_logo_width': 0})
        builder = self.mocker.mock()

        self.expect(builder.add_file('titlepage_logo.jpg', data='my-image'))

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('tabulary.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertIn(
            r'\def\sphinxlogo{\includegraphics{' + \
                r'titlepage_logo.jpg}}',
            latex)
예제 #5
0
    def test_get_book_returns_None_if_not_within_book(self):
        root = self.stub()
        self.expect(root.__parent__, None)
        obj = self.set_parent(self.stub(), self.set_parent(self.stub(), root))

        self.replay()
        layout = DefaultBookLayout(obj, object(), object())

        self.assertEqual(layout.get_book(), None)
예제 #6
0
    def test_get_book_walks_up(self):
        book = self.providing_stub([IBook])
        subchapter = self.set_parent(self.stub(),
                                     self.set_parent(self.stub(), book))

        self.replay()

        layout = DefaultBookLayout(subchapter, object(), object())

        self.assertEqual(layout.get_book(), book)
예제 #7
0
    def test_title_is_inserted_literally(self):
        # The spinx layout expects the title to not be LaTeX, but the string
        # literal.

        self._mock_portal_languages_tool()
        book = self._mock_book({'Title': 'Foo-Bar'})
        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual('Foo-Bar', layout.get_render_arguments()['title'])
예제 #8
0
    def test_title_is_inserted_literally(self):
        # The spinx layout expects the title to not be LaTeX, but the string
        # literal.

        self._mock_portal_languages_tool()
        book = self._mock_book({'Title': 'Foo-Bar'})
        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual('Foo-Bar', layout.get_render_arguments()['title'])
예제 #9
0
    def test_get_render_arguments_babel(self):
        book = self._mock_book()

        language_tool = self.stub()
        self.mock_tool(language_tool, 'portal_languages')
        self.expect(language_tool.getPreferredLanguage()).result('de')

        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual(layout.get_render_arguments()['babel'], 'ngerman')
예제 #10
0
    def test_get_book_walks_up(self):
        book = self.providing_stub([IBook])
        subchapter = self.set_parent(
            self.stub(), self.set_parent(
                self.stub(),
                book))

        self.replay()

        layout = DefaultBookLayout(subchapter, object(), object())

        self.assertEqual(layout.get_book(), book)
예제 #11
0
    def test_get_render_arguments_babel(self):
        book = self._mock_book()

        language_tool = self.mocker.mock()
        self.mock_tool(language_tool, 'portal_languages')
        self.expect(language_tool.getPreferredLanguage()).result('de')

        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual(layout.get_render_arguments()['babel'], 'ngerman')
예제 #12
0
    def test_get_book_returns_None_if_not_within_book(self):
        root = self.stub()
        self.expect(root.__parent__, None)
        obj = self.set_parent(
            self.stub(),
            self.set_parent(
                self.stub(),
                root))

        self.replay()
        layout = DefaultBookLayout(obj, object(), object())

        self.assertEqual(layout.get_book(), None)
예제 #13
0
    def test_using_index(self):
        self._mock_portal_languages_tool()
        book_without_index = self._mock_book({'getUse_index': False})
        book_with_index = self._mock_book({'getUse_index': True})
        builder = self.stub()
        self.expect(builder.add_file(ANY, data=ANY))
        self.replay()

        without_index_latex = DefaultBookLayout(book_without_index, object(),
                                                builder).render_latex('')
        self.assertNotIn(r'\makeindex', without_index_latex)
        self.assertNotIn(r'\printindex', without_index_latex)

        with_index_latex = DefaultBookLayout(book_with_index, object(),
                                             builder).render_latex('')
        self.assertIn(r'\makeindex', with_index_latex)
        self.assertIn(r'\printindex', with_index_latex)
예제 #14
0
    def test_get_render_arguments(self):
        self._mock_portal_languages_tool()
        book = self._mock_book()
        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual(
            layout.get_render_arguments(),
            {'context_is_book': True,
             'title': 'My book',
             'use_titlepage': True,
             'use_toc': True,
             'use_lot': True,
             'use_loi': True,
             'authoraddress': r'Bern\\Switzerland',
             'author': '4teamwork',
             'release': '2.5',
             'babel': 'english',
             'logo': False,
             'logo_width': 0})
예제 #15
0
    def test_disabled_metadata(self):
        self._mock_portal_languages_tool()
        book = self._mock_book({
                'release': '',
                'author': '',
                'author_address': ''})
        builder = self.mocker.mock()

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertNotIn(r'\release{', latex)
        self.assertNotIn(r'\author', latex)
        self.assertNotIn(r'\authoraddress', latex)
예제 #16
0
    def test_get_render_arguments(self):
        self._mock_portal_languages_tool()
        book = self._mock_book()
        self.replay()

        layout = DefaultBookLayout(book, object(), object())

        self.assertEqual(
            layout.get_render_arguments(), {
                'context_is_book': True,
                'title': 'My book',
                'use_titlepage': True,
                'use_toc': True,
                'use_lot': True,
                'use_loi': True,
                'use_index': False,
                'index_title': u'Index',
                'authoraddress': r'Bern\\Switzerland',
                'author': '4teamwork',
                'release': '2.5',
                'babel': 'english',
                'logo': False,
                'logo_width': 0
            })
예제 #17
0
    def test_disabled_metadata(self):
        self._mock_portal_languages_tool()
        book = self._mock_book({
            'release': '',
            'author': '',
            'author_address': ''
        })
        builder = self.mocker.mock()

        self.expect(builder.add_file('sphinx.sty', data=ANY))
        self.expect(builder.add_file('fncychap.sty', data=ANY))
        self.expect(builder.add_file('tabulary.sty', data=ANY))
        self.expect(builder.add_file('sphinxftw.cls', data=ANY))
        self.expect(builder.add_file('sphinxhowto.cls', data=ANY))
        self.expect(builder.add_file('sphinxmanual.cls', data=ANY))
        self.replay()

        layout = DefaultBookLayout(book, object(), builder)

        latex = layout.render_latex('content latex')

        self.assertNotIn(r'\release{', latex)
        self.assertNotIn(r'\author', latex)
        self.assertNotIn(r'\authoraddress', latex)