Path:
tests/end2end/screens/search/view_search_screen/test_case.py
Lines:
153
Non-empty lines:
124
Non-empty lines covered with requirements:
124 / 124 (100.0%)
Functions:
7
Functions covered by requirements:
7 / 7 (100.0%)
1
"""2
@relation(SDOC-SRS-155, scope=file)3
"""4
5
import os
6
7
from tests.end2end.e2e_case import E2ECase
8
from tests.end2end.helpers.screens.project_index.screen_project_index import (
9
Screen_ProjectIndex,
10
)11
from tests.end2end.helpers.screens.search.search import (
12
Screen_Search,
13
Screen_SearchResults,
14
)15
from tests.end2end.server import SDocTestServer
16
17
path_to_this_test_file_folder = os.path.dirname(os.path.abspath(__file__))
18
19
20
class Test(E2ECase):
21
def test_01_search_links(self):
22
with SDocTestServer(
23
input_path=path_to_this_test_file_folder
24
) as test_server:
25
self.open(test_server.get_host_and_port())
26
screen_project_index = Screen_ProjectIndex(self)
27
screen_project_index.assert_on_screen()
28
screen_project_index.assert_link_to_search_screen_present()
29
30
screen_search: Screen_Search = (
31
screen_project_index.do_click_on_search_screen_link()
32
)33
screen_search.assert_on_screen("search")
34
35
screen_search_results: Screen_SearchResults = (
36
screen_search.do_click_on_search_requirements()
37
)38
screen_search_results.assert_text("Requirement statement.")
39
screen_search_results.assert_no_text("Section title")
40
self.go_back()
41
42
screen_search_results = screen_search.do_click_on_search_sections()
43
screen_search_results.assert_text("Section title")
44
screen_search_results.assert_text("New section title")
45
screen_search_results.assert_no_text("Requirement statement.")
46
self.go_back()
47
48
screen_search_results = (
49
screen_search.do_click_on_search_node_with_system_title()
50
)51
screen_search_results.assert_nr_results(0)
52
self.go_back()
53
54
def test_02_empty_search(self):
55
with SDocTestServer(
56
input_path=path_to_this_test_file_folder
57
) as test_server:
58
self.open(test_server.get_host_and_port())
59
60
screen_project_index = Screen_ProjectIndex(self)
61
screen_project_index.assert_on_screen()
62
63
screen_search: Screen_Search = (
64
screen_project_index.do_click_on_search_screen_link()
65
)66
screen_search_results = screen_search.do_search(
67
"""(node.is_requirement and node["STATEMENT"] == "BOGUS_STATEMENT")"""
68
)69
70
screen_search_results.assert_nr_results(0)
71
72
def test_03_invalid_query_search(self):
73
with SDocTestServer(
74
input_path=path_to_this_test_file_folder
75
) as test_server:
76
self.open(test_server.get_host_and_port())
77
78
screen_project_index = Screen_ProjectIndex(self)
79
screen_project_index.assert_on_screen()
80
81
screen_search: Screen_Search = (
82
screen_project_index.do_click_on_search_screen_link()
83
)84
# Contains query markers, so it is parsed as a query and expected to fail.85
screen_search_results = screen_search.do_search(
86
"""(node.is_requirement and foo)"""
87
)88
89
self.assertRegex(
90
screen_search_results.get_search_error_msg(),
91
"error:.+Expected.+[*]foo",
92
)93
94
def test_04_text_search_empty_result(self):
95
query = """I definitely won't find anything that way"""
96
answer = """Nothing matching the query was found."""
97
with SDocTestServer(
98
input_path=path_to_this_test_file_folder
99
) as test_server:
100
self.open(test_server.get_host_and_port())
101
102
screen_project_index = Screen_ProjectIndex(self)
103
screen_project_index.assert_on_screen()
104
105
screen_search: Screen_Search = (
106
screen_project_index.do_click_on_search_screen_link()
107
)108
screen_search_results = screen_search.do_search(query)
109
screen_search_results.assert_nr_results(0)
110
screen_search_results.assert_text(answer)
111
112
def test_05_text_search_wildcard_ordered_words(self):
113
with SDocTestServer(
114
input_path=path_to_this_test_file_folder
115
) as test_server:
116
self.open(test_server.get_host_and_port())
117
118
screen_project_index = Screen_ProjectIndex(self)
119
screen_project_index.assert_on_screen()
120
121
screen_search: Screen_Search = (
122
screen_project_index.do_click_on_search_screen_link()
123
)124
125
screen_search_results = screen_search.do_search(
126
"""Requirement statement"""
127
)128
screen_search_results.assert_nr_results(1)
129
screen_search_results.assert_text("Requirement statement.")
130
131
screen_search_results = screen_search.do_search(
132
"""statement Requirement"""
133
)134
screen_search_results.assert_nr_results(0)
135
136
def test_06_text_search_exact_phrase(self):
137
with SDocTestServer(
138
input_path=path_to_this_test_file_folder
139
) as test_server:
140
self.open(test_server.get_host_and_port())
141
142
screen_project_index = Screen_ProjectIndex(self)
143
screen_project_index.assert_on_screen()
144
145
screen_search: Screen_Search = (
146
screen_project_index.do_click_on_search_screen_link()
147
)148
149
screen_search_results = screen_search.do_search(
150
'"Requirement statement."'151
)152
screen_search_results.assert_nr_results(1)
153
screen_search_results.assert_text("Requirement statement.")