72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
/* 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();
|
|
});
|