@@ -7,21 +7,19 @@ import (
77
88 "github.com/stretchr/testify/assert"
99 "github.com/stretchr/testify/require"
10-
11- "github.com/mallardduck/teapot-router/pkg/dispatch"
1210)
1311
1412func TestDispatchBasicRouting (t * testing.T ) {
1513 r := New ()
1614
17- r .Dispatch ("GET" , "/items" , func (d * DispatchBuilder ) {
15+ r .Dispatch ("GET" , "/items" , func (d * DispatchBuilder , m Matchers ) {
1816 d .Default (func (w http.ResponseWriter , _ * http.Request ) {
1917 _ , _ = w .Write ([]byte ("list-all" ))
2018 })
21- d .When (dispatch .QueryEquals ("type" , "active" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
19+ d .When (m .QueryEquals ("type" , "active" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
2220 _ , _ = w .Write ([]byte ("list-active" ))
2321 })
24- d .When (dispatch .QueryExists ("search" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
22+ d .When (m .QueryExists ("search" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
2523 _ , _ = w .Write ([]byte ("search" ))
2624 })
2725 })
@@ -52,13 +50,13 @@ func TestDispatchNameAndAction(t *testing.T) {
5250
5351 var capturedName , capturedAction string
5452
55- r .Dispatch ("GET" , "/things" , func (d * DispatchBuilder ) {
53+ r .Dispatch ("GET" , "/things" , func (d * DispatchBuilder , m Matchers ) {
5654 d .Default (func (_ http.ResponseWriter , req * http.Request ) {
5755 capturedName = GetRouteName (req )
5856 capturedAction = GetAction (req )
5957 }).Name ("things.list" ).Action ("api:things:List" )
6058
61- d .When (dispatch .QueryEquals ("view" , "detail" )).Do (func (_ http.ResponseWriter , req * http.Request ) {
59+ d .When (m .QueryEquals ("view" , "detail" )).Do (func (_ http.ResponseWriter , req * http.Request ) {
6260 capturedName = GetRouteName (req )
6361 capturedAction = GetAction (req )
6462 }).Name ("things.detail" ).Action ("api:things:Detail" )
@@ -86,9 +84,9 @@ func TestDispatchNameAndAction(t *testing.T) {
8684func TestDispatchURLGeneration (t * testing.T ) {
8785 r := New ()
8886
89- r .Dispatch ("GET" , "/users/{id}" , func (d * DispatchBuilder ) {
87+ r .Dispatch ("GET" , "/users/{id}" , func (d * DispatchBuilder , m Matchers ) {
9088 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("user.show" )
91- d .When (dispatch .QueryExists ("edit" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("user.edit" )
89+ d .When (m .QueryExists ("edit" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("user.edit" )
9290 })
9391
9492 url , err := r .URL ("user.show" , "id" , "42" )
@@ -103,10 +101,10 @@ func TestDispatchURLGeneration(t *testing.T) {
103101func TestDispatchRouteListing (t * testing.T ) {
104102 r := New ()
105103
106- r .Dispatch ("GET" , "/api/items" , func (d * DispatchBuilder ) {
104+ r .Dispatch ("GET" , "/api/items" , func (d * DispatchBuilder , m Matchers ) {
107105 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("api.items.list" ).Action ("api:Items:List" )
108- d .When (dispatch .QueryEquals ("status" , "active" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("api.items.active" ).Action ("api:Items:ListActive" )
109- d .When (dispatch .QueryExists ("search" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("api.items.search" ).Action ("api:Items:Search" )
106+ d .When (m .QueryEquals ("status" , "active" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("api.items.active" ).Action ("api:Items:ListActive" )
107+ d .When (m .QueryExists ("search" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("api.items.search" ).Action ("api:Items:Search" )
110108 })
111109
112110 routes := r .Routes ()
@@ -142,13 +140,13 @@ func TestDispatchWildcardParams(t *testing.T) {
142140
143141 var capturedBucket , capturedKey string
144142
145- r .Dispatch ("GET" , "/{bucket}/{key:.*}" , func (d * DispatchBuilder ) {
143+ r .Dispatch ("GET" , "/{bucket}/{key:.*}" , func (d * DispatchBuilder , m Matchers ) {
146144 d .Default (func (w http.ResponseWriter , req * http.Request ) {
147145 capturedBucket = URLParam (req , "bucket" )
148146 capturedKey = URLParam (req , "key" )
149147 _ , _ = w .Write ([]byte ("object" ))
150148 })
151- d .When (dispatch .QueryExists ("acl" )).Do (func (w http.ResponseWriter , req * http.Request ) {
149+ d .When (m .QueryExists ("acl" )).Do (func (w http.ResponseWriter , req * http.Request ) {
152150 capturedBucket = URLParam (req , "bucket" )
153151 capturedKey = URLParam (req , "key" )
154152 _ , _ = w .Write ([]byte ("acl" ))
@@ -187,7 +185,7 @@ func TestDispatchMiddleware(t *testing.T) {
187185 })
188186 }
189187
190- r .Dispatch ("GET" , "/mw-test" , func (d * DispatchBuilder ) {
188+ r .Dispatch ("GET" , "/mw-test" , func (d * DispatchBuilder , m Matchers ) {
191189 d .Default (func (w http.ResponseWriter , _ * http.Request ) {
192190 _ , _ = w .Write ([]byte ("ok" ))
193191 }).With (mw )
@@ -206,7 +204,7 @@ func TestDispatchConflictWithDirect(t *testing.T) {
206204 r .GET ("/conflict" , func (_ http.ResponseWriter , _ * http.Request ) {})
207205
208206 assert .Panics (t , func () {
209- r .Dispatch ("GET" , "/conflict" , func (d * DispatchBuilder ) {
207+ r .Dispatch ("GET" , "/conflict" , func (d * DispatchBuilder , m Matchers ) {
210208 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {})
211209 })
212210 })
@@ -217,7 +215,7 @@ func TestDispatchConflictWithExistingDispatcher(t *testing.T) {
217215 r .QueryGET ("/conflict" , func (_ http.ResponseWriter , _ * http.Request ) {}).Query ("foo" )
218216
219217 assert .Panics (t , func () {
220- r .Dispatch ("GET" , "/conflict" , func (d * DispatchBuilder ) {
218+ r .Dispatch ("GET" , "/conflict" , func (d * DispatchBuilder , m Matchers ) {
221219 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {})
222220 })
223221 })
@@ -227,8 +225,8 @@ func TestDispatchMissingHandler(t *testing.T) {
227225 r := New ()
228226
229227 assert .Panics (t , func () {
230- r .Dispatch ("GET" , "/missing" , func (d * DispatchBuilder ) {
231- d .When (dispatch .QueryExists ("foo" )) // No .Do() call — handler is nil
228+ r .Dispatch ("GET" , "/missing" , func (d * DispatchBuilder , m Matchers ) {
229+ d .When (m .QueryExists ("foo" )) // No .Do() call — handler is nil
232230 })
233231 })
234232}
@@ -237,9 +235,9 @@ func TestDispatchDuplicateName(t *testing.T) {
237235 r := New ()
238236
239237 assert .Panics (t , func () {
240- r .Dispatch ("GET" , "/dup-name" , func (d * DispatchBuilder ) {
238+ r .Dispatch ("GET" , "/dup-name" , func (d * DispatchBuilder , m Matchers ) {
241239 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("same-name" )
242- d .When (dispatch .QueryExists ("x" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("same-name" )
240+ d .When (m .QueryExists ("x" )).Do (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("same-name" )
243241 })
244242 })
245243}
@@ -249,7 +247,7 @@ func TestDispatchNameConflictWithFluentAPI(t *testing.T) {
249247 r .GET ("/other" , func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("taken" )
250248
251249 assert .Panics (t , func () {
252- r .Dispatch ("GET" , "/different-path" , func (d * DispatchBuilder ) {
250+ r .Dispatch ("GET" , "/different-path" , func (d * DispatchBuilder , m Matchers ) {
253251 d .Default (func (_ http.ResponseWriter , _ * http.Request ) {}).Name ("taken" )
254252 })
255253 })
@@ -264,11 +262,11 @@ func TestDispatchCoexistsWithFluentAPI(t *testing.T) {
264262 }).Name ("fluent.route" )
265263
266264 // Dispatch-style route on a different path
267- r .Dispatch ("GET" , "/grouped" , func (d * DispatchBuilder ) {
265+ r .Dispatch ("GET" , "/grouped" , func (d * DispatchBuilder , m Matchers ) {
268266 d .Default (func (w http.ResponseWriter , _ * http.Request ) {
269267 _ , _ = w .Write ([]byte ("grouped-default" ))
270268 }).Name ("grouped.default" )
271- d .When (dispatch .QueryExists ("special" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
269+ d .When (m .QueryExists ("special" )).Do (func (w http.ResponseWriter , _ * http.Request ) {
272270 _ , _ = w .Write ([]byte ("grouped-special" ))
273271 }).Name ("grouped.special" )
274272 })
@@ -303,7 +301,7 @@ func TestDispatchWithNamedGroup(t *testing.T) {
303301 r := New ()
304302
305303 r .NamedGroup ("/api" , "api" , func (sub * Router ) {
306- sub .Dispatch ("GET" , "/things" , func (d * DispatchBuilder ) {
304+ sub .Dispatch ("GET" , "/things" , func (d * DispatchBuilder , m Matchers ) {
307305 d .Default (func (w http.ResponseWriter , _ * http.Request ) {
308306 _ , _ = w .Write ([]byte ("things" ))
309307 }).Name ("list" ).Action ("api:Things:List" )
0 commit comments