8
8
from github_to_sqlite import cli
9
9
import pytest
10
10
11
+ README_HTML = """
12
+ <li><a href="#filtering-tables">Filtering tables</a></li>
13
+ ...
14
+ <h3><a id="user-content-filtering-tables" class="anchor" aria-hidden="true" href="#filtering-tables">#</a>Filtering tables</h3>
15
+ """
16
+ EXPECTED_README_HTML = """
17
+ <li><a href="#user-content-filtering-tables">Filtering tables</a></li>
18
+ ...
19
+ <h3><a id="user-content-filtering-tables" class="anchor" aria-hidden="true" href="#user-content-filtering-tables">#</a>Filtering tables</h3>
20
+ """
21
+
11
22
12
23
@pytest .fixture
13
24
def mocked (requests_mock ):
@@ -21,27 +32,14 @@ def mocked(requests_mock):
21
32
)
22
33
requests_mock .get (
23
34
"https://api.github.com/repos/dogsheep/github-to-sqlite/readme" ,
24
- text = "<h1>This is the README</h1>" ,
35
+ text = README_HTML ,
25
36
additional_matcher = lambda request : request .headers .get ("accept" )
26
37
== "application/vnd.github.VERSION.html" ,
27
38
)
28
39
29
40
30
41
def test_repos (mocked , tmpdir ):
31
- runner = CliRunner ()
32
- db_path = str (tmpdir / "test.db" )
33
- result = runner .invoke (
34
- cli .cli ,
35
- [
36
- "repos" ,
37
- db_path ,
38
- "-r" ,
39
- "dogsheep/github-to-sqlite" ,
40
- "--readme" ,
41
- "--readme-html" ,
42
- ],
43
- )
44
- assert 0 == result .exit_code
42
+ db_path = _run_repos (tmpdir )
45
43
db = sqlite_utils .Database (db_path )
46
44
assert db .table_names () == [
47
45
"users" ,
@@ -67,11 +65,10 @@ def test_repos(mocked, tmpdir):
67
65
repo = next (iter (db ["repos" ].rows ))
68
66
assert repo ["full_name" ] == "dogsheep/github-to-sqlite"
69
67
assert repo ["readme" ] == "# This is the README"
70
- assert repo ["readme_html" ] == "<h1>This is the README</h1>"
68
+ assert repo ["readme_html" ] is not None
71
69
72
70
73
71
def test_repos_readme_not_available (requests_mock , tmpdir ):
74
- runner = CliRunner ()
75
72
requests_mock .get (
76
73
"https://api.github.com/repos/dogsheep/github-to-sqlite" ,
77
74
json = json .load (open (pathlib .Path (__file__ ).parent / "repo.json" )),
@@ -80,6 +77,23 @@ def test_repos_readme_not_available(requests_mock, tmpdir):
80
77
"https://api.github.com/repos/dogsheep/github-to-sqlite/readme" ,
81
78
status_code = 400 ,
82
79
)
80
+ db_path = _run_repos (tmpdir )
81
+ db = sqlite_utils .Database (db_path )
82
+ row = list (db ["repos" ].rows )[0 ]
83
+ assert row ["name" ] == "github-to-sqlite"
84
+ assert row ["readme" ] is None
85
+ assert row ["readme_html" ] is None
86
+
87
+
88
+ def test_readme_internal_links_are_rewritten (mocked , tmpdir ):
89
+ # https://github.com/dogsheep/github-to-sqlite/issues/58
90
+ db_path = _run_repos (tmpdir )
91
+ db = sqlite_utils .Database (db_path )
92
+ assert list (db ["repos" ].rows )[0 ]["readme_html" ] == EXPECTED_README_HTML
93
+
94
+
95
+ def _run_repos (tmpdir ):
96
+ runner = CliRunner ()
83
97
db_path = str (tmpdir / "test.db" )
84
98
result = runner .invoke (
85
99
cli .cli ,
@@ -93,8 +107,4 @@ def test_repos_readme_not_available(requests_mock, tmpdir):
93
107
],
94
108
)
95
109
assert 0 == result .exit_code
96
- db = sqlite_utils .Database (db_path )
97
- row = list (db ["repos" ].rows )[0 ]
98
- assert row ["name" ] == "github-to-sqlite"
99
- assert row ["readme" ] is None
100
- assert row ["readme_html" ] is None
110
+ return db_path
0 commit comments