Skip to content

Commit 6876c7a

Browse files
committed
fix: issue
1 parent 0ce9acf commit 6876c7a

File tree

4 files changed

+16
-9
lines changed

4 files changed

+16
-9
lines changed

src/html-pipe.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export async function htmlPipe(state, req) {
131131
state.timer?.update('metadata-fetch');
132132
await Promise.all([
133133
contentPromise,
134-
fetchMappedMetadata(state),
134+
fetchMappedMetadata(state, res),
135135
]);
136136

137137
if (res.error) {

src/steps/fetch-mapped-metadata.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import { PipelineStatusError } from '../PipelineStatusError.js';
1414
import { Modifiers } from '../utils/modifiers.js';
15+
import { extractLastModified, updateLastModified } from '../utils/last-modified.js';
1516

1617
/**
1718
* Loads metadata for a mapped path and puts it into `state.mappedMetadata`. If path is not
@@ -20,9 +21,10 @@ import { Modifiers } from '../utils/modifiers.js';
2021
*
2122
* @type PipelineStep
2223
* @param {PipelineState} state
24+
* @param {PipelineResponse} res
2325
* @returns {Promise<void>}
2426
*/
25-
export default async function fetchMappedMetadata(state) {
27+
export default async function fetchMappedMetadata(state, res) {
2628
state.mappedMetadata = Modifiers.EMPTY;
2729
if (!state.mapped) {
2830
return;
@@ -51,6 +53,7 @@ export default async function fetchMappedMetadata(state) {
5153
state.mappedMetadata = Modifiers.fromModifierSheet(
5254
data,
5355
);
56+
updateLastModified(state, res, extractLastModified(ret.headers));
5457
return;
5558
}
5659
if (ret.status !== 404) {

test/rendering.test.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,7 @@ describe('Rendering', () => {
670670
assert.deepStrictEqual(Object.fromEntries(resp.headers.entries()), {
671671
'access-control-allow-origin': '*',
672672
'content-type': 'text/html; charset=utf-8',
673+
'last-modified': 'Fri, 30 Apr 2021 03:47:18 GMT',
673674
'x-surrogate-key': 'AkcHu8fRFT7HarTR foo-id_metadata super-test--helix-pages--adobe_head foo-id AkcHu8fRFT7HarTR_metadata z8NGXvKB0X5Fzcnd',
674675
link: '</scripts/scripts.js>; rel=modulepreload; as=script; crossorigin=use-credentials',
675676
});
@@ -716,6 +717,9 @@ describe('Rendering', () => {
716717
});
717718

718719
it('respect metadata with folder mapping: self and descendents', async () => {
720+
loader
721+
.headers('generic-product/metadata.json', 'last-modified', 'Thu Nov 07 2024 00:00:00 GMT+0000');
722+
719723
let resp = await render(new URL('https://helix-pipeline.com/products'));
720724
assert.strictEqual(resp.status, 200);
721725
assert.match(resp.body, /<meta name="short-title" content="E">/);
@@ -730,7 +734,7 @@ describe('Rendering', () => {
730734
assert.deepStrictEqual(Object.fromEntries(resp.headers.entries()), {
731735
'access-control-allow-origin': '*',
732736
'content-type': 'text/html; charset=utf-8',
733-
'last-modified': 'Fri, 30 Apr 2021 03:47:18 GMT',
737+
'last-modified': 'Thu Nov 07 2024 00:00:00 GMT+0000',
734738
'x-surrogate-key': 'AkcHu8fRFT7HarTR foo-id_metadata super-test--helix-pages--adobe_head foo-id AkcHu8fRFT7HarTR_metadata z8NGXvKB0X5Fzcnd',
735739
link: '</scripts/scripts.js>; rel=modulepreload; as=script; crossorigin=use-credentials',
736740
});

test/steps/fetch-mapped-metadata.test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*/
1212
/* eslint-env mocha */
1313
import assert from 'assert';
14-
import { PipelineStatusError } from '../../src/index.js';
14+
import { PipelineResponse, PipelineStatusError } from '../../src/index.js';
1515
import { StaticS3Loader } from '../StaticS3Loader.js';
1616
import fetchMappedMetadata from '../../src/steps/fetch-mapped-metadata.js';
1717
import { FileS3Loader } from '../FileS3Loader.js';
@@ -30,7 +30,7 @@ describe('Fetch Mapped Metadata', () => {
3030
s3Loader: new FileS3Loader()
3131
.rewrite('foo-id/live/mapped/metadata.json', 'metadata-kv.json'),
3232
};
33-
await fetchMappedMetadata(state);
33+
await fetchMappedMetadata(state, new PipelineResponse());
3434
assert.deepEqual(state.mappedMetadata.getModifiers('/new/foo'), {
3535
description: 'Lorem ipsum dolor sit amet.',
3636
keywords: 'ACME, CORP, PR',
@@ -53,7 +53,7 @@ describe('Fetch Mapped Metadata', () => {
5353
body: 'this is no json!',
5454
headers: new Map(),
5555
}),
56-
});
56+
}, new PipelineResponse());
5757
await assert.rejects(promise, new PipelineStatusError(500, 'failed parsing of /mapped/metadata.json: Unexpected token \'h\', "this is no json!" is not valid JSON'));
5858
});
5959

@@ -74,7 +74,7 @@ describe('Fetch Mapped Metadata', () => {
7474
}),
7575
});
7676
await assert.rejects(promise, new PipelineStatusError(500, 'failed loading of /mapped/metadata.json: data must be an array'));
77-
});
77+
}, new PipelineResponse());
7878

7979
it('ignores metadata with no data array', async () => {
8080
const state = {
@@ -94,7 +94,7 @@ describe('Fetch Mapped Metadata', () => {
9494
};
9595
await fetchMappedMetadata(state);
9696
assert.strictEqual(state.mappedMetadata, Modifiers.EMPTY);
97-
});
97+
}, new PipelineResponse());
9898

9999
it('throws error on generic error', async () => {
100100
const promise = fetchMappedMetadata({
@@ -113,5 +113,5 @@ describe('Fetch Mapped Metadata', () => {
113113
}),
114114
});
115115
await assert.rejects(promise, new PipelineStatusError(502, 'failed to load /mapped/metadata.json: 500'));
116-
});
116+
}, new PipelineResponse());
117117
});

0 commit comments

Comments
 (0)