44 assertSpyCalls ,
55 ConditionalHeader ,
66 describe ,
7+ equalsRequest ,
78 equalsResponse ,
89 it ,
910 Method ,
@@ -56,8 +57,12 @@ describe("_handler", () => {
5657 } ) ;
5758
5859 it ( "should call next handler if the selected response has not pre-evaluable status" , async ( ) => {
59- const request = new Request ( "test:" , { headers : { "test" : "" } } ) ;
60- const select = spy ( ( ) => new Response ( null , { status : Status . NotFound } ) ) ;
60+ const initRequest = new Request ( "test:" , { headers : { "test" : "" } } ) ;
61+ const select = spy ( async ( request : Request ) => {
62+ assert ( await equalsRequest ( request , new Request ( "test:" ) ) ) ;
63+
64+ return new Response ( null , { status : Status . NotFound } ) ;
65+ } ) ;
6166 const initResponse = new Response ( ) ;
6267 const next = spy ( ( ) => initResponse ) ;
6368 const evaluate = spy ( ( ) => true ) ;
@@ -66,14 +71,60 @@ describe("_handler", () => {
6671 const response = await _handler (
6772 select ,
6873 [ { field : "test" , evaluate, respond } ] ,
69- request ,
74+ initRequest ,
7075 next ,
7176 ) ;
7277
7378 assertSpyCalls ( evaluate , 0 ) ;
7479 assertSpyCalls ( respond , 0 ) ;
7580 assertSpyCalls ( select , 1 ) ;
76- assertSpyCallArg ( select , 0 , 0 , request ) ;
81+ assertSpyCalls ( next , 1 ) ;
82+ assert ( initResponse === response ) ;
83+ } ) ;
84+
85+ it ( "should request what does not include precondition headers and custom precondition headers" , async ( ) => {
86+ const initRequest = new Request ( "test:" , {
87+ headers : {
88+ [ ConditionalHeader . IfNoneMatch ] : "" ,
89+ [ ConditionalHeader . IfMatch ] : "" ,
90+ [ ConditionalHeader . IfModifiedSince ] : "" ,
91+ [ ConditionalHeader . IfRange ] : "" ,
92+ [ ConditionalHeader . IfUnmodifiedSince ] : "" ,
93+ "x-precondition" : "" ,
94+ "x-test" : "" ,
95+ } ,
96+ } ) ;
97+ const select = spy ( async ( request : Request ) => {
98+ assert (
99+ await equalsRequest (
100+ request ,
101+ new Request ( "test:" , {
102+ headers : {
103+ "x-test" : "" ,
104+ } ,
105+ } ) ,
106+ ) ,
107+ ) ;
108+
109+ return new Response ( null , { status : Status . NotFound } ) ;
110+ } ) ;
111+ const initResponse = new Response ( ) ;
112+ const next = spy ( ( ) => initResponse ) ;
113+ const evaluate = spy ( ( ) => true ) ;
114+ const respond = spy ( ( ) => { } ) ;
115+
116+ const response = await _handler (
117+ select ,
118+ [ { field : ConditionalHeader . IfNoneMatch , evaluate, respond } , {
119+ field : "X-Precondition" ,
120+ evaluate,
121+ respond,
122+ } ] ,
123+ initRequest ,
124+ next ,
125+ ) ;
126+
127+ assertSpyCalls ( select , 1 ) ;
77128 assertSpyCalls ( next , 1 ) ;
78129 assert ( initResponse === response ) ;
79130 } ) ;
0 commit comments