From 137027e421da9ffa2d2bbc23c08b2a47d4abd328 Mon Sep 17 00:00:00 2001 From: Joachim Van Herwegen Date: Wed, 14 Feb 2024 14:15:35 +0100 Subject: [PATCH] fix: Keep content-type when using metadata templates --- src/pods/generate/BaseResourcesGenerator.ts | 4 ++++ test/unit/pods/generate/BaseResourcesGenerator.test.ts | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/pods/generate/BaseResourcesGenerator.ts b/src/pods/generate/BaseResourcesGenerator.ts index 4d46b00c8..2b89cb616 100644 --- a/src/pods/generate/BaseResourcesGenerator.ts +++ b/src/pods/generate/BaseResourcesGenerator.ts @@ -197,6 +197,10 @@ export class BaseResourcesGenerator implements TemplatedResourcesGenerator { // Add metadata from .meta file if there is one if (metaLink) { const rawMetadata = await this.generateMetadata(metaLink, options); + if (!rawMetadata.contentType) { + // Make sure this does not remove the content-type if none is explicitly defined + rawMetadata.contentType = metadata.contentType; + } const metaIdentifier = this.metadataStrategy.getAuxiliaryIdentifier(link.identifier); const descriptionMeta = new RepresentationMetadata(metaIdentifier); addResourceMetadata(rawMetadata, isContainerIdentifier(link.identifier)); diff --git a/test/unit/pods/generate/BaseResourcesGenerator.test.ts b/test/unit/pods/generate/BaseResourcesGenerator.test.ts index 9f97f5a4f..371f8ad76 100644 --- a/test/unit/pods/generate/BaseResourcesGenerator.test.ts +++ b/test/unit/pods/generate/BaseResourcesGenerator.test.ts @@ -10,6 +10,7 @@ import { asyncToArray } from '../../../../src/util/IterableUtil'; import { ensureTrailingSlash, joinFilePath, trimTrailingSlashes } from '../../../../src/util/PathUtil'; import { readableToQuads, readableToString } from '../../../../src/util/StreamUtil'; import { HandlebarsTemplateEngine } from '../../../../src/util/templates/HandlebarsTemplateEngine'; +import { CONTENT_TYPE_TERM } from '../../../../src/util/Vocabularies'; import { SimpleSuffixStrategy } from '../../../util/SimpleSuffixStrategy'; import { mockFileSystem } from '../../../util/Util'; @@ -144,6 +145,10 @@ describe('A BaseResourcesGenerator', (): void => { const expDocMetadataQuads = docMetadataQuads.getQuads(docMetadata.identifier, 'pre:has', null, null); expect(expDocMetadataQuads).toHaveLength(1); expect(expDocMetadataQuads[0].object.value).toBe('metadata'); + // Metadata will replace existing metadata so need to make sure content-type is still there + const contentDocMetadataQuads = docMetadataQuads.getQuads(docMetadata.identifier, CONTENT_TYPE_TERM, null, null); + expect(contentDocMetadataQuads).toHaveLength(1); + expect(contentDocMetadataQuads[0].object.value).toBe('text/turtle'); }); it('does not create container when it already exists.', async(): Promise => {