blob: badce0829e866ea654900efd7bb86588e6859c65 [file] [log] [blame]
if (self.importScripts) {
importScripts('/resources/testharness.js');
importScripts('../resources/testharness-helpers.js');
importScripts('../resources/test-helpers.js');
}
// TODO(b/250611661): implement complete Cache API and adhere to web spec. Once
// complete, enable the tests commented out.
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();