@@ -6,6 +6,7 @@ class IssueQueryAnySearchableTest < ActiveSupport::TestCase
66 unless IssueQuery . method_defined? ( :sql_for_any_searchable_field )
77 skip ( "Required feature 'sql_for_any_searchable_field' does not exist." )
88 end
9+ User . current = nil
910 end
1011
1112 def test_or_one_word
@@ -65,5 +66,96 @@ def test_and_two_words
6566 ]
6667 assert_equal ( expected_issues , query . issues )
6768 end
69+
70+ def test_and_two_words_within_my_projects
71+ Issue . destroy_all
72+ my_user = User . find ( 1 )
73+ project = Project . generate!
74+ User . add_to_project ( my_user , project )
75+
76+ # User's project issues.
77+ subject_groonga_description_pgroonga =
78+ Issue . generate! ( project : project ,
79+ subject : "ぐるんが" ,
80+ description : "ぴーじーるんが" )
81+ without_keywords = Issue . generate! ( project : project ,
82+ subject : "no-keyword" ,
83+ description : "no-keyword" )
84+ subject_pgroonga_journal_groonga =
85+ Issue . generate! ( project : project , subject : "ぴーじーるんが" )
86+ . journals . create! ( notes : "ぐるんが" )
87+ # Another project issue.
88+ subject_pgroonga_description_groonga =
89+ Issue . generate! ( subject : "ぴーじーるんが" ,
90+ description : "ぐるんが" )
91+
92+ User . current = my_user
93+ query = IssueQuery . new (
94+ :name => "_" ,
95+ :filters => {
96+ "any_searchable" => {
97+ :operator => "~" ,
98+ :values => [ "ぐるんが ぴーじーるんが" ]
99+ } ,
100+ "project_id" => {
101+ :operator => "=" ,
102+ :values => [ 'mine' ]
103+ } ,
104+ } ,
105+ :sort_criteria => [ [ "id" , "asc" ] ]
106+ )
107+ expected_issues = [
108+ subject_groonga_description_pgroonga ,
109+ subject_pgroonga_journal_groonga . issue
110+ ]
111+ assert_equal ( expected_issues , query . issues )
112+ end
113+
114+ def test_and_two_words_within_bookmarks
115+ Issue . destroy_all
116+ bookmark_user = User . find ( 1 )
117+ bookmarked_project =
118+ Project . where ( id : [ bookmark_user . bookmarked_project_ids ] )
119+ . first
120+ no_bookmarked_project = Project . generate!
121+
122+ # User's bookmarked project issues.
123+ subject_groonga_description_pgroonga =
124+ Issue . generate! ( project : bookmarked_project ,
125+ subject : "ぐるんが" ,
126+ description : "ぴーじーるんが" )
127+ without_keywords = Issue . generate! ( project : bookmarked_project ,
128+ subject : "no-keyword" ,
129+ description : "no-keyword" )
130+ subject_pgroonga_journal_groonga =
131+ Issue . generate! ( project : bookmarked_project , subject : "ぴーじーるんが" )
132+ . journals . create! ( notes : "ぐるんが" )
133+ # Another project issue.
134+ subject_pgroonga_description_groonga =
135+ Issue . generate! ( project : no_bookmarked_project ,
136+ subject : "ぴーじーるんが" ,
137+ description : "ぐるんが" )
138+
139+ User . current = bookmark_user
140+ query = IssueQuery . new (
141+ :name => "_" ,
142+ :filters => {
143+ "any_searchable" => {
144+ :operator => "~" ,
145+ :values => [ "ぐるんが ぴーじーるんが" ]
146+ } ,
147+ "project_id" => {
148+ :operator => "=" ,
149+ :values => [ "bookmarks" ]
150+ } ,
151+ } ,
152+ :sort_criteria => [ [ "id" , "asc" ] ]
153+ )
154+ expected_issues = [
155+ subject_groonga_description_pgroonga ,
156+ subject_pgroonga_journal_groonga . issue
157+ ]
158+ assert_equal ( expected_issues , query . issues )
159+ end
68160 end
69161end
0 commit comments