@@ -407,3 +407,48 @@ func TestGenerateServer_BaseURLPlacement(t *testing.T) {
407407 require .NotContains (t , src , `params.BaseURL+"GET ` , "BaseURL should not come before HTTP method" )
408408 require .NotContains (t , src , `params.BaseURL+"POST ` , "BaseURL should not come before HTTP method" )
409409}
410+
411+ func TestGenerateServer_BooleanQueryParams (t * testing.T ) {
412+ api := & API {
413+ PackageName : "v4" ,
414+ StructName : "Server" ,
415+ ModulePath : "github.com/example/app" ,
416+ Endpoints : []Endpoint {
417+ {
418+ Name : "SearchItems" ,
419+ Method : "GET" ,
420+ Path : "/items" ,
421+ RequestType : "SearchItemsRequest" ,
422+ Params : []Param {
423+ {Name : "active" , GoName : "Active" , GoType : "bool" , Location : "query" , Required : true },
424+ {Name : "verified" , GoName : "Verified" , GoType : "bool" , Location : "query" , Required : false },
425+ },
426+ Response : Response {StatusCode : 200 , GoType : "[]Item" },
427+ },
428+ },
429+ }
430+
431+ code , err := GenerateServer (api )
432+ require .NoError (t , err )
433+
434+ src := string (code )
435+
436+ // Verify it parses as valid Go
437+ fset := token .NewFileSet ()
438+ _ , err = parser .ParseFile (fset , "server.gen.go" , src , 0 )
439+ require .NoError (t , err , "generated code should be valid Go" )
440+
441+ // Check required boolean parameter handling
442+ require .Contains (t , src , `strconv.ParseBool(r.URL.Query().Get("active"))` )
443+ require .Contains (t , src , `req.Active = v` )
444+ require .Contains (t , src , `runtime.WriteBadRequest(w, "invalid query parameter: active")` )
445+
446+ // Check optional boolean parameter handling
447+ require .Contains (t , src , `if qs := r.URL.Query().Get("verified"); qs != ""` )
448+ require .Contains (t , src , `strconv.ParseBool(qs)` )
449+ require .Contains (t , src , `req.Verified = v` )
450+ require .Contains (t , src , `runtime.WriteBadRequest(w, "invalid query parameter: verified")` )
451+
452+ // strconv should be imported for bool params
453+ require .Contains (t , src , `"strconv"` )
454+ }
0 commit comments