UNPKG

2.09 kBJavaScriptView Raw
1import test from 'ava';
2import addSeconds from 'date-fns/add_seconds';
3import isEqual from 'date-fns/is_equal';
4import expired from '../';
5
6test('expired.on is a function', t => {
7 t.is(typeof expired.in, 'function');
8});
9
10test('expired.on returns correct expirey date for valid cache', t => {
11 const date = new Date().toUTCString();
12 const maxAge = 300;
13 const headers = {
14 date,
15 age: 0,
16 'cache-control': `public, max-age=${maxAge}`
17 };
18 const expiredOn = addSeconds(date, maxAge);
19
20 t.true(isEqual(expired.on(headers), expiredOn));
21});
22
23test('expired.on returns correct expirey date for instantly stale cache', t => {
24 const date = new Date().toUTCString();
25 const headers = {
26 date,
27 age: 0,
28 'cache-control': `public, max-age=0`
29 };
30
31 t.true(isEqual(expired.on(headers), date));
32});
33
34test('expired.on returns correct expirey date for stale cache', t => {
35 const date = new Date().toUTCString();
36 const dateOffset = -600;
37 const maxAge = 300;
38 const headers = {
39 date: addSeconds(date, dateOffset).toUTCString(),
40 age: 0,
41 'cache-control': `public, max-age=${maxAge}`
42 };
43 const expiredOn = addSeconds(date, (maxAge + dateOffset));
44
45 t.true(isEqual(expired.on(headers), expiredOn));
46});
47
48test('expired.on takes age into account', t => {
49 const date = new Date().toUTCString();
50 const age = 150;
51 const maxAge = 300;
52 const headers = {
53 date,
54 age,
55 'cache-control': `public, max-age=${maxAge}`
56 };
57 const expiredOn = addSeconds(date, (maxAge - age));
58
59 t.true(isEqual(expired.on(headers), expiredOn));
60});
61
62test('expired.on uses Expires header', t => {
63 const date = new Date().toUTCString();
64 const headers = {
65 date: addSeconds(date, 300),
66 expires: date
67 };
68
69 t.true(isEqual(expired.on(headers), date));
70});
71
72test('expired.on prefers Cache-Control over Expires header', t => {
73 const date = new Date().toUTCString();
74 const age = 150;
75 const maxAge = 300;
76 const headers = {
77 date,
78 age,
79 'cache-control': `public, max-age=${maxAge}`,
80 expires: date
81 };
82 const expiredOn = addSeconds(date, (maxAge - age));
83
84 t.true(isEqual(expired.on(headers), expiredOn));
85});