11package requests_test
22
33import (
4- "github.com/opf/openproject-cli/components/resources/notifications"
5- "github.com/opf/openproject-cli/components/resources/work_packages"
64 "strings"
75 "testing"
86
97 "github.com/opf/openproject-cli/components/requests"
8+ "github.com/opf/openproject-cli/components/resources/notifications"
9+ "github.com/opf/openproject-cli/components/resources/work_packages"
1010)
1111
1212func TestFilterQuery_String_WithFilters (t * testing.T ) {
@@ -100,6 +100,55 @@ func TestQuery_String(t *testing.T) {
100100 }
101101}
102102
103+ func TestFilter_Equals (t * testing.T ) {
104+ filter1 := work_packages .StatusFilter ("1,3" )
105+ filter2 := work_packages .StatusFilter ("3,1" )
106+ filter3 := work_packages .StatusFilter ("1" )
107+
108+ if ! filter1 .Equals (filter2 ) {
109+ t .Errorf ("Expected %+v to equal %+v" , filter1 , filter2 )
110+ }
111+
112+ if filter1 .Equals (filter3 ) {
113+ t .Errorf ("Expected %+v to not equal %+v" , filter1 , filter3 )
114+ }
115+
116+ if filter2 .Equals (filter3 ) {
117+ t .Errorf ("Expected %+v to not equal %+v" , filter2 , filter3 )
118+ }
119+ }
120+
121+ func TestQuery_Equals (t * testing.T ) {
122+ query1 := requests .NewQuery (
123+ map [string ]string {"pageSize" : "20" , "timestamps" : "PT0S" },
124+ []requests.Filter {work_packages .TypeFilter ("!1" ), work_packages .StatusFilter ("1,3" )},
125+ )
126+ query2 := requests .NewQuery (
127+ map [string ]string {"timestamps" : "PT0S" , "pageSize" : "20" },
128+ []requests.Filter {work_packages .StatusFilter ("3,1" ), work_packages .TypeFilter ("!1" )},
129+ )
130+ query3 := requests .NewQuery (
131+ map [string ]string {"pageSize" : "20" },
132+ []requests.Filter {work_packages .StatusFilter ("3,1" ), work_packages .TypeFilter ("!1" )},
133+ )
134+ query4 := requests .NewQuery (
135+ map [string ]string {"timestamps" : "PT0S" , "pageSize" : "20" },
136+ []requests.Filter {work_packages .StatusFilter ("1" ), work_packages .TypeFilter ("!1" )},
137+ )
138+
139+ if ! query1 .Equals (query2 ) {
140+ t .Errorf ("Expected %+v to equal %+v" , query1 , query2 )
141+ }
142+
143+ if query1 .Equals (query3 ) {
144+ t .Errorf ("Expected %+v to not equal %+v" , query1 , query2 )
145+ }
146+
147+ if query1 .Equals (query4 ) {
148+ t .Errorf ("Expected %+v to not equal %+v" , query1 , query2 )
149+ }
150+ }
151+
103152func TestQuery_Merge (t * testing.T ) {
104153 attributes1 := map [string ]string {
105154 "pageSize" : "20" ,
@@ -117,13 +166,23 @@ func TestQuery_Merge(t *testing.T) {
117166 work_packages .TypeFilter ("!1" ),
118167 }
119168
169+ attributes3 := map [string ]string {
170+ "pageSize" : "25" ,
171+ "timestamps" : "PT0S" ,
172+ "includeSubprojects" : "true" ,
173+ }
174+
175+ filters3 := []requests.Filter {
176+ work_packages .TypeFilter ("!1" ),
177+ work_packages .StatusFilter ("1,3" ),
178+ }
179+
120180 query1 := requests .NewQuery (attributes1 , filters1 )
121181 query2 := requests .NewQuery (attributes2 , filters2 )
182+ query3 := requests .NewQuery (attributes3 , filters3 )
122183
123184 result := query1 .Merge (query2 )
124- expected := "filters=%5B%7B%22status%22%3A%7B%22operator%22%3A%22%3D%22%2C%22values%22%3A%5B%221%22%2C%223%22%5D%7D%7D%2C%7B%22type%22%3A%7B%22operator%22%3A%22%21%22%2C%22values%22%3A%5B%221%22%5D%7D%7D%5D&pageSize=25×tamps=PT0S&includeSubprojects=true"
125-
126- if result .String () != expected {
127- t .Errorf ("Expected %s, but got %s" , expected , result .String ())
185+ if ! result .Equals (query3 ) {
186+ t .Errorf ("Expected %+v, but got %+v" , query3 , result )
128187 }
129188}
0 commit comments