blob: 29fa223c808d3910f011cd0e1d3303436ceca2de [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
from unittest import mock
import docsgen_transforms
class DocsgenTransformsTest(unittest.TestCase):
SAMPLE_TOC = 'toc:\n- title: "Code of conduct"\n path: /CODE_OF_CONDUCT.md\n- title: "Overview"\n path: /docs/contribute/testing/README.md'
SAMPLE_MD = '# Diagnostics Selectors\n[TOC]\n## Listener {#Listener}\nblah blah blah\n### OnGesture {#Listener.OnGesture}\nhahaha'
UPDATED_REF = '''Project: /_project.yaml
Book: /_book.yaml
edit_url: https://fuchsia.googlesource.com/reference-docs/+show/main/fakefile
bug_url: https://bugs.fuchsia.dev/p/fuchsia/issues/entry?template=Fuchsia.dev%20Documentation&description=Issue%20on%20page:%20https://ci.android.com/edit?repo=fuchsia/fuchsia/main%26file=fakefile
<!-- public markdown source of this page: https://fuchsia.googlesource.com/reference-docs/+show/main/fakefile -->
<!-- The header above is automatically added to this file. Do not modify anything above this line. -->
# Diagnostics Selectors
[TOC]
## Listener {#Listener}
blah blah blah
### OnGesture {#Listener.OnGesture}
hahaha
<!-- The footer below is automatically added to this file. Do not modify anything below this line. -->
'''
UPDATED_REG = '''Project: /_project.yaml
Book: /_book.yaml
edit_url: https://ci.android.com/edit?repo=fuchsia/fuchsia/main&file=fakefile
bug_url: https://bugs.fuchsia.dev/p/fuchsia/issues/entry?template=Fuchsia.dev%20Documentation&description=Issue%20on%20page:%20https://ci.android.com/edit?repo=fuchsia/fuchsia/main%26file=fakefile
<!-- original source of this page: https://cs.opensource.google/fuchsia/fuchsia/+/main:fakefile -->
<!-- The header above is automatically added to this file. Do not modify anything above this line. -->
# Diagnostics Selectors
[TOC]
## Listener {#Listener}
blah blah blah
### OnGesture {#Listener.OnGesture}
hahaha
<!-- The footer below is automatically added to this file. Do not modify anything below this line. -->
<div class="align-right">
<a href="https://bugs.fuchsia.dev/p/fuchsia/issues/entry?template=Fuchsia.dev%20Documentation&description=Issue%20on%20page:%20https://ci.android.com/edit?repo=fuchsia/fuchsia/main%26file=fakefile" title="Report a bug or suggest improvements on this page"><span class="material-icons" style="font-size: 18px">bug_report</span></a>
<a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:fakefile" title="View the source code of this page"><span class="material-icons" style="font-size: 18px">code</span></a>
<a href="https://ci.android.com/edit?repo=fuchsia/fuchsia/main&file=fakefile" title="Edit the source code of this page"><span class="material-icons" style="font-size: 18px">edit</span></a>
</div>
'''
def test_add_markdown_footer_and_header_ref(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_MD)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._add_markdown_header_and_footer(
is_regular_docs=False)
handle = mock_open()
handle.write.assert_called_once_with(self.UPDATED_REF)
def test_add_markdown_footer_and_header_reg(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_MD)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._add_markdown_header_and_footer(
is_regular_docs=True)
handle = mock_open()
handle.write.assert_called_once_with(self.UPDATED_REG)
def test_remove_toc(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_MD)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._remove_toc()
handle = mock_open()
handle.write.assert_called_once_with(
'# Diagnostics Selectors\n<!-- commented [TOC] -->\n## Listener {#Listener}\nblah blah blah\n### OnGesture {#Listener.OnGesture}\nhahaha'
)
def test_rename_readme(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch.object(docsgen_transforms.os,
'rename') as mock_rename:
mock_glob.return_value = [
'path/to/fake/README.md',
'README.md',
]
docsgen_transforms._rename_readme()
mock_rename.assert_any_call(
'path/to/fake/README.md', 'path/to/fake/index.md')
mock_rename.assert_any_call('README.md', 'index.md')
def test_canonical_header_anchorid(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_MD)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._canonical_header_anchorid()
handle = mock_open()
handle.write.assert_called_once_with(
'# Diagnostics Selectors\n[TOC]\n## Listener {:#Listener transformation="converted"}\nblah blah blah\n### OnGesture {:#Listener.OnGesture transformation="converted"}\nhahaha'
)
def test_transform_toc_files_regular(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_TOC)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._transform_toc_files(is_regular_docs=True)
handle = mock_open()
handle.writelines.assert_called_once_with(
[
'toc:\n', '- title: "Code of conduct"\n',
' path: /fuchsia-src/CODE_OF_CONDUCT.md\n',
'- title: "Overview"\n',
' path: /fuchsia-src/contribute/testing/index.md'
])
def test_transform_toc_files_reference(self):
with mock.patch.object(docsgen_transforms.glob, 'glob') as mock_glob:
with mock.patch(
'builtins.open',
mock.mock_open(read_data=self.SAMPLE_TOC)) as mock_open:
mock_glob.return_value = ['fakefile']
docsgen_transforms._transform_toc_files(is_regular_docs=False)
handle = mock_open()
handle.writelines.assert_called_once_with(
[
'toc:\n', '- title: "Code of conduct"\n',
' path: /CODE_OF_CONDUCT.md\n',
'- title: "Overview"\n',
' path: /docs/contribute/testing/index.md'
])