OLD | NEW |
(Empty) | |
| 1 importScripts('worker-testharness.js'); |
| 2 importScripts('/resources/testharness-helpers.js'); |
| 3 |
| 4 promise_test(function(t) { |
| 5 return create_temporary_cache(t) |
| 6 .then(function(cache) { |
| 7 return assert_promise_rejects( |
| 8 cache.add(''), |
| 9 new TypeError(), |
| 10 'Cache.add should throw a TypeError when no arguments are given.'); |
| 11 }); |
| 12 }, 'Cache.add with no arguments'); |
| 13 |
| 14 promise_test(function(t) { |
| 15 return create_temporary_cache(t) |
| 16 .then(function(cache) { |
| 17 return cache.add('simple.txt') |
| 18 .then(function(result) { |
| 19 assert_true(result instanceof Response, |
| 20 'Cache.add should return a Response on success.'); |
| 21 assert_equals(result.status, 200, |
| 22 'Cache.add should not fulfill until response ' + |
| 23 'headers are received.'); |
| 24 }); |
| 25 }); |
| 26 }, 'Cache.add with successful request'); |
| 27 |
| 28 promise_test(function(t) { |
| 29 return create_temporary_cache(t) |
| 30 .then(function(cache) { |
| 31 return assert_promise_rejects( |
| 32 cache.add('this-does-not-exist-please-do-not-create-it'), |
| 33 new TypeError(), |
| 34 'Cache.add should throw TypeError if the resource does not exist.'); |
| 35 }); |
| 36 }, 'Cache.add with resource that results in a status of 404'); |
| 37 |
| 38 promise_test(function(t) { |
| 39 return create_temporary_cache(t) |
| 40 .then(function(cache) { |
| 41 return assert_promise_rejects( |
| 42 cache.addAll(), |
| 43 new TypeError(), |
| 44 'Cache.addAll should throw TypeError if there are no arguments'); |
| 45 }); |
| 46 }, 'Cache.addAll with no arguments'); |
| 47 |
| 48 promise_test(function(t) { |
| 49 // Assumes the existence of simple.txt and blank.html in the same directory |
| 50 // as this test script. |
| 51 var urls = ['simple.txt', self.location.href, 'blank.html']; |
| 52 return create_temporary_cache(t) |
| 53 .then(function(cache) { |
| 54 return cache.addAll(urls) |
| 55 .then(verify_response_array_against_urls.bind(undefined, urls)); |
| 56 }); |
| 57 }, 'Cache.addAll with ScalarValueString arguments'); |
| 58 |
| 59 promise_test(function(t) { |
| 60 // Assumes the existence of simple.txt and blank.html in the same directory |
| 61 // as this test script. |
| 62 var urls = ['simple.txt', self.location.href, 'blank.html']; |
| 63 var requests = urls.map(function(url) { |
| 64 return new Request(url, {method: 'GET'}); |
| 65 }); |
| 66 return create_temporary_cache(t) |
| 67 .then(function(cache) { |
| 68 return cache.addAll(requests) |
| 69 .then(verify_response_array_against_urls.bind(undefined, urls)); |
| 70 }); |
| 71 }, 'Cache.addAll with Request arguments'); |
| 72 |
| 73 promise_test(function(t) { |
| 74 // Assumes that simple.txt and blank.html are existing resources. The second |
| 75 // resource does not. |
| 76 var urls = ['simple.txt', 'this-resource-should-not-exist', 'blank.html']; |
| 77 |
| 78 var cache; |
| 79 return create_temporary_cache(t) |
| 80 .then(function(created_cache) { |
| 81 cache = created_cache; |
| 82 return assert_promise_rejects( |
| 83 cache.addAll(urls), |
| 84 new TypeError(), |
| 85 'Cache.addAll should throw TypeError if any of the requests fail.'); |
| 86 }) |
| 87 .then(function() { |
| 88 return cache.keys(); |
| 89 }) |
| 90 .then(function(result) { |
| 91 assert_equals(result.length, 0, |
| 92 'Cache.addAll should not add any requests in a ' + |
| 93 'failing batch.'); |
| 94 }); |
| 95 }, 'Cache.addAll with failing request'); |
| 96 |
| 97 // Helpers --- |
| 98 |
| 99 // Asserts that |results| is an Array of Response objects that have URLs |
| 100 // corresponding to |urls|. Used to verify the output of Cache.addAll. |
| 101 function verify_response_array_against_urls(urls, results) { |
| 102 assert_true(Array.isArray(result), |
| 103 'Cache.addAll should resolve to an array.'); |
| 104 assert_equals(result.length, urls.length, |
| 105 'Cache.addAll should resolve to an array whose ' + |
| 106 'length is the same as the number of requests that ' + |
| 107 'were added.'); |
| 108 |
| 109 var result_urls = |
| 110 response.map(function(response) { |
| 111 assert_true(response instanceof Response, |
| 112 'Cache.addAll should resolve to an array of ' + |
| 113 'Responses.'); |
| 114 return response.url; |
| 115 }); |
| 116 |
| 117 var request_urls = urls.map(absolute_url); |
| 118 |
| 119 assert_array_equals( |
| 120 result_urls, request_urls, |
| 121 'Cache.addAll should resolve to an array of Response objects ' + |
| 122 'that correspond to the input requests.'); |
| 123 } |
| 124 |
| 125 // Returns an absolute URL if the input URL is either already an absolute URL or |
| 126 // is a single component that should be resolved relative to self.location.href. |
| 127 function absolute_url(url) { |
| 128 return new URL(url, self.location.href).href; |
| 129 } |
| 130 |
OLD | NEW |