/* global context testDone:true */ var url = "test_cache.js"; var cache; var fetchResponse; Promise.all([fetch(url), caches.open("putter" + context)]) .then(function (results) { fetchResponse = results[0]; cache = results[1]; return cache.put(url, fetchResponse.clone()); }) .then(function (result) { is(undefined, result, "Successful put() should resolve undefined"); return cache.match(url); }) .then(function (response) { ok(response, "match() should find resppnse that was previously put()"); ok( response.url.endsWith(url), "matched response should match original url" ); return Promise.all([fetchResponse.text(), response.text()]); }) .then(function (results) { // suppress large assert spam unless it's relevent if (results[0] !== results[1]) { is(results[0], results[1], "stored response body should match original"); } // Now, try to overwrite the request with a different response object. return cache.put(url, new Response("overwritten")); }) .then(function () { return cache.matchAll(url); }) .then(function (result) { is(result.length, 1, "Only one entry should exist"); return result[0].text(); }) .then(function (body) { is( body, "overwritten", "The cache entry should be successfully overwritten" ); // Now, try to write a URL with a fragment return cache.put(url + "#fragment", new Response("more overwritten")); }) .then(function () { return cache.matchAll(url + "#differentFragment"); }) .then(function (result) { is(result.length, 1, "Only one entry should exist"); return result[0].text(); }) .then(function (body) { is( body, "more overwritten", "The cache entry should be successfully overwritten" ); // TODO: Verify that trying to store a response with an error raises a TypeError // when bug 1147178 is fixed. return caches.delete("putter" + context); }) .then(function (deleted) { ok(deleted, "The cache should be deleted successfully"); testDone(); });