| #!/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' |
| ]) |