43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
|
|
require('../src/common');
|
|
|
|
const { buildDuplicateSlideName, buildDuplicateSlide } = require('../src/web/routes/signage/slides/duplicate');
|
|
const renderSlideAddPage = require('../src/web/routes/signage/slides/add');
|
|
|
|
test('buildDuplicateSlide copies slide fields for the create page', () => {
|
|
const duplicate = buildDuplicateSlide({
|
|
id: 11,
|
|
title: 'Morning Loop',
|
|
template_id: 7,
|
|
content: { hero: { type: 'text', value: 'Hello' } }
|
|
}, buildDuplicateSlideName('Morning Loop'));
|
|
|
|
assert.equal(duplicate.id, null);
|
|
assert.equal(duplicate.title, 'Copy of Morning Loop');
|
|
assert.equal(duplicate.template_id, 7);
|
|
assert.deepEqual(duplicate.content, { hero: { type: 'text', value: 'Hello' } });
|
|
});
|
|
|
|
test('slide duplicate add page renders the copied slide title', async () => {
|
|
const html = await renderSlideAddPage(
|
|
{ id: null, title: 'Copy of Morning Loop', template_id: 7, content: { hero: { type: 'text', value: 'Hello' } } },
|
|
{ templates: [], templateRegions: [], rssFeeds: [], apiSources: [], timetableGroups: [], fontLibrary: null },
|
|
'Review the copied values and save when ready.',
|
|
{ permissionKeys: ['slides.create'] }
|
|
);
|
|
|
|
assert.match(html, /Copy of Morning Loop/);
|
|
assert.match(html, /Create slide/);
|
|
assert.match(html, /Select a template to preview the slide\./);
|
|
});
|
|
|
|
test('slide list template includes duplicate action', () => {
|
|
const template = fs.readFileSync(path.join(__dirname, '..', 'src', 'web', 'views', 'signage', 'slides', 'list.hbs'), 'utf8');
|
|
|
|
assert.match(template, /\/slides\/\{\{id\}\}\/duplicate/);
|
|
assert.match(template, />Dupe<\/a>/);
|
|
}); |