if (self.importScripts) { importScripts('/resources/testharness.js'); importScripts('../resources/testharness-helpers.js'); importScripts('../resources/test-helpers.js'); } var test_url = 'https://example.com/foo'; // Construct a generic Request object. The URL is |test_url|. All other fields // are defaults. function new_test_request() { return new Request(test_url); } // Construct a generic Response object. function new_test_response() { return new Response('Hello world!', { status: 200 }); } cache_test(function(cache) { return assert_promise_rejects( cache.delete(), new TypeError(), 'Cache.delete should reject with a TypeError when called with no ' + 'arguments.'); }, 'Cache.delete with no arguments'); cache_test(function(cache) { return cache.put(new_test_request(), new_test_response()) .then(function() { return cache.delete(test_url); }) .then(function(result) { assert_true(result, 'Cache.delete should resolve with "true" if an entry ' + 'was successfully deleted.'); return cache.match(test_url); }) .then(function(result) { assert_equals(result, undefined, 'Cache.delete should remove matching entries from cache.'); }); }, 'Cache.delete called with a string URL'); cache_test(function(cache) { var request = new Request(test_url); return cache.put(request, new_test_response()) .then(function() { return cache.delete(request); }) .then(function(result) { assert_true(result, 'Cache.delete should resolve with "true" if an entry ' + 'was successfully deleted.'); }); }, 'Cache.delete called with a Request object'); cache_test(function(cache) { return cache.delete(test_url) .then(function(result) { assert_false(result, 'Cache.delete should resolve with "false" if there ' + 'are no matching entries.'); }); }, 'Cache.delete with a non-existent entry'); var cache_entries = { a: { request: new Request('http://example.com/abc'), response: new Response('') }, b: { request: new Request('http://example.com/b'), response: new Response('') }, a_with_query: { request: new Request('http://example.com/abc?q=r'), response: new Response('') } }; function prepopulated_cache_test(test_function, description) { cache_test(function(cache) { return Promise.all(Object.keys(cache_entries).map(function(k) { return cache.put(cache_entries[k].request.clone(), cache_entries[k].response.clone()); })) .then(function() { return test_function(cache); }); }, description); } done();