1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
from pyfakefs.fake_filesystem_unittest import TestCase
# Valid markdown content with YAML metadata
MARKDOWN_WITH_METADATA = """
---
title: TestTitle
description: TestDescription
relevant_links:
Python Discord: https://pythondiscord.com
Discord: https://discord.com
---
# This is a header.
"""
MARKDOWN_WITHOUT_METADATA = """#This is a header."""
# Valid YAML in a _info.yml file
CATEGORY_INFO = """
name: Category Name
description: Description
"""
# The HTML generated from the above markdown data
PARSED_HTML = (
'<h1 id="this-is-a-header">This is a header.'
'<a class="headerlink" href="#this-is-a-header" title="Permanent link">¶</a></h1>'
)
# The YAML metadata parsed from the above markdown data
PARSED_METADATA = {
"title": "TestTitle", "description": "TestDescription",
"relevant_links": {
"Python Discord": "https://pythondiscord.com",
"Discord": "https://discord.com"
}
}
# The YAML data parsed from the above _info.yml file
PARSED_CATEGORY_INFO = {"name": "Category Name", "description": "Description"}
class MockPagesTestCase(TestCase):
"""
TestCase with a fake filesystem for testing.
Structure:
├── _info.yml
├── root.md
├── root_without_metadata.md
├── not_a_page.md
├── tmp
| ├── _info.yml
| └── category_without_info
└── category
├── _info.yml
├── with_metadata.md
└── subcategory
├── with_metadata.md
└── without_metadata.md
"""
def setUp(self):
"""Create the fake filesystem."""
self.setUpPyfakefs()
self.fs.create_file("_info.yml", contents=CATEGORY_INFO)
self.fs.create_file("root.md", contents=MARKDOWN_WITH_METADATA)
self.fs.create_file("root_without_metadata.md", contents=MARKDOWN_WITHOUT_METADATA)
self.fs.create_file("not_a_page.md/_info.yml", contents=CATEGORY_INFO)
self.fs.create_file("category/_info.yml", contents=CATEGORY_INFO)
self.fs.create_file("category/with_metadata.md", contents=MARKDOWN_WITH_METADATA)
self.fs.create_file("category/subcategory/_info.yml", contents=CATEGORY_INFO)
self.fs.create_file(
"category/subcategory/with_metadata.md", contents=MARKDOWN_WITH_METADATA
)
self.fs.create_file(
"category/subcategory/without_metadata.md", contents=MARKDOWN_WITHOUT_METADATA
)
# There is always a `tmp` directory in the filesystem, so make it a category
# for testing purposes.
# See: https://jmcgeheeiv.github.io/pyfakefs/release/usage.html#os-temporary-directories
self.fs.create_file("tmp/_info.yml", contents=CATEGORY_INFO)
self.fs.create_dir("tmp/category_without_info")
|