@@ -154,4 +154,62 @@ describe("pat-ajax", function () {
154154 expect ( ajaxargs . headers ) . toEqual ( { Accept : "*/*" } ) ;
155155 } ) ;
156156 } ) ;
157+
158+ describe ( "caching" , ( ) => {
159+ afterEach ( function ( ) {
160+ document . body . innerHTML = "" ;
161+ } ) ;
162+
163+ it ( "does not cache by default" , function ( ) {
164+ const spy_ajax = jest . spyOn ( $ , "ajax" ) ;
165+ document . body . innerHTML = `<a
166+ class="pat-ajax"
167+ />` ;
168+ registry . scan ( document . body ) ;
169+ document . body . querySelector ( ".pat-ajax" ) . click ( ) ;
170+ const ajaxargs = spy_ajax . mock . calls [ spy_ajax . mock . calls . length - 1 ] [ 0 ] ;
171+ expect ( ajaxargs . cache ) . toBe ( false ) ;
172+ spy_ajax . mockRestore ( ) ;
173+ } ) ;
174+
175+ it ( "does not cache when explicitly set" , function ( ) {
176+ const spy_ajax = jest . spyOn ( $ , "ajax" ) ;
177+ document . body . innerHTML = `<a
178+ class="pat-ajax"
179+ data-pat-ajax="browser-cache: no-cache"
180+ />` ;
181+ registry . scan ( document . body ) ;
182+ document . body . querySelector ( ".pat-ajax" ) . click ( ) ;
183+ const ajaxargs = spy_ajax . mock . calls [ spy_ajax . mock . calls . length - 1 ] [ 0 ] ;
184+ expect ( ajaxargs . cache ) . toBe ( false ) ;
185+ spy_ajax . mockRestore ( ) ;
186+ } ) ;
187+
188+ it ( "does cache when explicitly set" , function ( ) {
189+ const spy_ajax = jest . spyOn ( $ , "ajax" ) ;
190+ document . body . innerHTML = `<a
191+ class="pat-ajax"
192+ data-pat-ajax="browser-cache: cache"
193+ />` ;
194+ registry . scan ( document . body ) ;
195+ document . body . querySelector ( ".pat-ajax" ) . click ( ) ;
196+ const ajaxargs = spy_ajax . mock . calls [ spy_ajax . mock . calls . length - 1 ] [ 0 ] ;
197+ expect ( ajaxargs . cache ) . toBe ( true ) ;
198+ spy_ajax . mockRestore ( ) ;
199+ } ) ;
200+
201+ it ( "does not cache on POST forms, regardless of the setting" , function ( ) {
202+ const spy_ajax = jest . spyOn ( $ , "ajax" ) ;
203+ document . body . innerHTML = `<form
204+ class="pat-ajax"
205+ method="POST"
206+ data-pat-ajax="browser-cache: cache"
207+ />` ;
208+ registry . scan ( document . body ) ;
209+ $ ( ".pat-ajax" ) . submit ( ) ; // need jquery submit here
210+ const ajaxargs = spy_ajax . mock . calls [ spy_ajax . mock . calls . length - 1 ] [ 0 ] ;
211+ expect ( ajaxargs . cache ) . toBe ( false ) ;
212+ spy_ajax . mockRestore ( ) ;
213+ } ) ;
214+ } ) ;
157215} ) ;
0 commit comments