StrictDoc Documentation
tests/end2end/screens/search/view_search_screen/test_case.py
Source file coverage
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.")