@@ -23,31 +23,42 @@ import (
2323)
2424
2525func TestRoundTripper (t * testing.T ) {
26- t .Run ("if the HX-Request header is present, set the templ-skip-modify header on the response" , func (t * testing.T ) {
27- rt := & roundTripper {}
28- req , err := http .NewRequest ("GET" , "http://example.com" , nil )
29- if err != nil {
30- t .Fatalf ("unexpected error creating request: %v" , err )
31- }
32- req .Header .Set ("HX-Request" , "true" )
33- resp := & http.Response {Header : make (http.Header )}
34- rt .setShouldSkipResponseModificationHeader (req , resp )
35- if resp .Header .Get ("templ-skip-modify" ) != "true" {
36- t .Errorf ("expected templ-skip-modify header to be true, got %v" , resp .Header .Get ("templ-skip-modify" ))
37- }
38- })
39- t .Run ("if the HX-Request header is not present, do not set the templ-skip-modify header on the response" , func (t * testing.T ) {
40- rt := & roundTripper {}
41- req , err := http .NewRequest ("GET" , "http://example.com" , nil )
42- if err != nil {
43- t .Fatalf ("unexpected error creating request: %v" , err )
44- }
45- resp := & http.Response {Header : make (http.Header )}
46- rt .setShouldSkipResponseModificationHeader (req , resp )
47- if resp .Header .Get ("templ-skip-modify" ) != "" {
48- t .Errorf ("expected templ-skip-modify header to be empty, got %v" , resp .Header .Get ("templ-skip-modify" ))
49- }
50- })
26+ tests := []struct {
27+ name string
28+ headers map [string ]string
29+ expectedSkip string
30+ }{
31+ {
32+ name : "HTMX requests skip modification" ,
33+ headers : map [string ]string {"HX-Request" : "true" },
34+ expectedSkip : "true" ,
35+ },
36+ {
37+ name : "Datastar requests skip modification" ,
38+ headers : map [string ]string {"Datastar-Request" : "true" },
39+ expectedSkip : "true" ,
40+ },
41+ {
42+ name : "Non-HTMX and Datastar requests do not skip modification" ,
43+ headers : map [string ]string {},
44+ expectedSkip : "" ,
45+ },
46+ }
47+ for _ , tc := range tests {
48+ t .Run (tc .name , func (t * testing.T ) {
49+ t .Parallel ()
50+ rt := & roundTripper {}
51+ req := httptest .NewRequest ("GET" , "http://example.com" , nil )
52+ for k , v := range tc .headers {
53+ req .Header .Set (k , v )
54+ }
55+ resp := & http.Response {Header : make (http.Header )}
56+ rt .setShouldSkipResponseModificationHeader (req , resp )
57+ if resp .Header .Get ("templ-skip-modify" ) != tc .expectedSkip {
58+ t .Errorf ("expected templ-skip-modify header to be %q, got %q" , tc .expectedSkip , resp .Header .Get ("templ-skip-modify" ))
59+ }
60+ })
61+ }
5162}
5263
5364func getScriptTag (t * testing.T , nonce string ) string {
0 commit comments