Add test for custom page settings vs defaults and extended metadata

Tweak SplitMetadataAndText based on faulty assumptions for setting defaults.
This commit is contained in:
David Bolack
2026-04-11 10:19:37 -05:00
parent d3287b7cd7
commit 2fe733cc06
2 changed files with 88 additions and 14 deletions
+73
View File
@@ -1127,6 +1127,79 @@ brew`);
// Text
expect(testBrew.text).toEqual('text\n');
});
it('extended metadata', async ()=>{
const testBrew = {
text : '```metadata\n' +
'title: title\n' +
'description: description\n' +
'tags: [ \'tag a\' , \'tag b\' ]\n' +
'renderer: legacy\n' +
'theme: 5ePHB\n' +
'lang: en\n' +
'bleed:\n' +
' top: 1.5in\n' +
' bottom: 1.5in\n' +
' left: 1.5in\n' +
' right: 1.5in\n' +
'safetySpace:\n' +
' top: 1.25in\n' +
' bottom: 1.25in\n' +
' outer: 1.25in\n' +
' inner: 1.5in\n' +
'trimSize:\n' +
' width: 18.5in\n' +
' height: 111in\n' +
'columns: 12\n' +
'columnGutter: 1.125in\n' +
'license: AELF\n' +
'legalAuthors: Tom Bombadil\n' +
'\n' +
'```\n' +
'\n' +
'```css\n' +
'style\n' +
'style\n' +
'style\n' +
'```\n' +
'\n' +
'text\n'
};
splitTextStyleAndMetadata(testBrew);
// Metadata
expect(testBrew.title).toEqual('title');
expect(testBrew.description).toEqual('description');
expect(testBrew.renderer).toEqual('legacy');
expect(testBrew.theme).toEqual('5ePHB');
expect(testBrew.lang).toEqual('en');
// Paper Specfications
expect(testBrew.bleed.top).toEqual('1.5in');
expect(testBrew.bleed.bottom).toEqual('1.5in');
expect(testBrew.bleed.left).toEqual('1.5in');
expect(testBrew.bleed.right).toEqual('1.5in');
expect(testBrew.safetySpace.top).toEqual('1.25in');
expect(testBrew.safetySpace.bottom).toEqual('1.25in');
expect(testBrew.safetySpace.inner).toEqual('1.5in');
expect(testBrew.safetySpace.outer).toEqual('1.25in');
expect(testBrew.trimSize.width).toEqual('18.5in');
expect(testBrew.trimSize.height).toEqual('111in');
expect(testBrew.columns).toEqual(12);
expect(testBrew.columnGutter).toEqual('1.125in');
// Extended Metadata
expect(testBrew.license).toEqual('AELF');
expect(testBrew.legalAuthors).toEqual('Tom Bombadil');
// Style
expect(testBrew.style).toEqual('style\nstyle\nstyle\n');
// Text
expect(testBrew.text).toEqual('text\n');
});
});
describe('updateBrew', ()=>{
+15 -14
View File
@@ -95,36 +95,37 @@ const splitTextStyleAndMetadata = (brew)=>{
brew.snippets = yamlSnippetsToText(_.pick(metadata, ['snippets']).snippets || '');
// Copy Required Bleed Space or Use defaults
brew.bleed = {
top : _.pick(metadata, ['bleed']).top || '.125in',
bottom : _.pick(metadata, ['bleed']).bottom || '.125in',
left : _.pick(metadata, ['bleed']).left || '.125in',
right : _.pick(metadata, ['bleed']).right || '.125in',
top : _.pick(metadata, ['bleed']).bleed?.top || '.125in',
bottom : _.pick(metadata, ['bleed']).bleed?.bottom || '.125in',
left : _.pick(metadata, ['bleed']).bleed?.left || '.125in',
right : _.pick(metadata, ['bleed']).bleed?.right || '.125in',
};
// Copy Required Safe Space or Use defaults
brew.safetySpace = {
top : _.pick(metadata, ['safetySpace']).top || '.25in',
bottom : _.pick(metadata, ['safetySpace']).bottom || '.25in',
outer : _.pick(metadata, ['safetySpace']).outer || '.25in',
inner : _.pick(metadata, ['safetySpace']).inner || '.5in',
top : _.pick(metadata, ['safetySpace']).safetySpace?.top || '.25in',
bottom : _.pick(metadata, ['safetySpace']).safetySpace?.bottom || '.25in',
outer : _.pick(metadata, ['safetySpace']).safetySpace?.outer || '.25in',
inner : _.pick(metadata, ['safetySpace']).safetySpace?.inner || '.5in',
};
// Set brew paper trim size or default to US Letter
brew.trimSize = {
width : _.pick(metadata, ['trimSize']).width || '8.5in',
height : _.pick(metadata, ['trimSize']).height || '11in',
width : _.pick(metadata, ['trimSize']).trimSize?.width || '8.5in',
height : _.pick(metadata, ['trimSize']).trimSize?.height || '11in',
};
// Set Column specs or use defaults
brew.columns = _.pick(metadata, ['columns']) || '2';
brew.columnGutter = _.pick(metadata, ['columnGutter']) || '.125in';
brew.columns = metadata?.columns || 2;
brew.columnGutter = metadata?.columnGutter || '.125in';
// Set License or set to Unlicensed
brew.license = _.pick(metadata, ['license']) || 'None';
brew.license = metadata?.license || 'None';
// Set Authors legal names or to empty.
brew.legalAuthors = _.pick(metadata, ['legalAuthors']) || '';
brew.legalAuthors = metadata.legalAuthors || '';
brew.text = brew.text.slice(index + 6);
}