diff --git a/tests/test_search.py b/tests/test_search.py index 160dd1827..212ce778c 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -28,6 +28,17 @@ def setup_module(): parser = rst.Parser() +def jsload(path): + searchindex = path.text() + assert searchindex.startswith('Search.setIndex(') + + return jsdump.loads(searchindex[16:-2]) + + +def is_registered_term(index, keyword): + return index['terms'].get(keyword, []) != [] + + FILE_CONTENTS = '''\ .. test that comments are not indexed: boson @@ -54,25 +65,28 @@ def test_objects_are_escaped(app, status, warning): index = jsdump.loads(searchindex[16:-2]) assert 'n::Array<T, d>' in index.get('objects').get('') # n::Array is escaped -def assert_lang_agnostic_key_words(searchindex): - assert 'thisnoteith' not in searchindex - assert 'thisonetoo' in searchindex @with_app(testroot='search') def test_meta_keys_are_handled_for_language_en(app, status, warning): - os.remove(app.outdir / 'searchindex.js') app.builder.build_all() - searchindex = (app.outdir / 'searchindex.js').text() - assert_lang_agnostic_key_words(searchindex) - assert 'findthiskei' in searchindex - assert 'onlygerman' not in searchindex - assert 'thistoo' in searchindex + searchindex = jsload(app.outdir / 'searchindex.js') + assert not is_registered_term(searchindex, 'thisnoteith') + assert is_registered_term(searchindex, 'thisonetoo') + assert is_registered_term(searchindex, 'findthiskei') + assert is_registered_term(searchindex, 'thistoo') + assert not is_registered_term(searchindex, 'onlygerman') + assert is_registered_term(searchindex, 'notgerman') + assert not is_registered_term(searchindex, 'onlytoogerman') + @with_app(testroot='search', confoverrides={'html_search_language': 'de'}) def test_meta_keys_are_handled_for_language_de(app, status, warning): app.builder.build_all() - searchindex = (app.outdir / 'searchindex.js').text() - assert_lang_agnostic_key_words(searchindex) - assert 'onlygerman' in searchindex - assert 'notgerman' not in searchindex - assert 'onlytoogerman' in searchindex \ No newline at end of file + searchindex = jsload(app.outdir / 'searchindex.js') + assert not is_registered_term(searchindex, 'thisnoteith') + assert is_registered_term(searchindex, 'thisonetoo') + assert not is_registered_term(searchindex, 'findthiskei') + assert not is_registered_term(searchindex, 'thistoo') + assert is_registered_term(searchindex, 'onlygerman') + assert not is_registered_term(searchindex, 'notgerman') + assert is_registered_term(searchindex, 'onlytoogerman')