From d1e586bd401a6d83ecabafb3b833a5ae65b6e05f Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 25 Mar 2023 15:00:01 -0300 Subject: data steps: more "quick" functions & basic snapshot test demo --- test/snapshots/_support.js | 55 ++++++++++++++++++++++++++++++++++++++++++++ test/snapshots/linkArtist.js | 26 +++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 test/snapshots/_support.js create mode 100644 test/snapshots/linkArtist.js (limited to 'test') diff --git a/test/snapshots/_support.js b/test/snapshots/_support.js new file mode 100644 index 00000000..b51f2847 --- /dev/null +++ b/test/snapshots/_support.js @@ -0,0 +1,55 @@ +import {quickEvaluate} from '../../src/content-function.js'; +import {quickLoadContentDependencies} from '../../src/content/dependencies/index.js'; + +import chroma from 'chroma-js'; +import * as html from '../../src/util/html.js'; +import urlSpec from '../../src/url-spec.js'; +import {getColors} from '../../src/util/colors.js'; +import {generateURLs} from '../../src/util/urls.js'; + +export function testContentFunctions(t, message, fn) { + const urls = generateURLs(urlSpec); + + t.test(message, async t => { + const loadedContentDependencies = await quickLoadContentDependencies(); + + const evaluate = ({ + from = 'localized.home', + contentDependencies = {}, + extraDependencies = {}, + ...opts + }) => { + const {to} = urls.from(from); + + try { + return quickEvaluate({ + ...opts, + contentDependencies: { + ...contentDependencies, + ...loadedContentDependencies, + }, + extraDependencies: { + html, + to, + urls, + appendIndexHTML: false, + getColors: c => getColors(c, {chroma}), + ...extraDependencies, + }, + }); + } catch (error) { + if (error instanceof AggregateError) { + error = new Error(`AggregateError: ${error.message}\n${error.errors.map(err => `** ${err}`).join('\n')}`); + } + throw error; + } + }; + + evaluate.snapshot = (opts, fn) => { + const result = (fn ? fn(evaluate(opts)) : evaluate(opts)); + t.matchSnapshot(result.toString(), 'output'); + }; + + return fn(t, evaluate); + }); +} diff --git a/test/snapshots/linkArtist.js b/test/snapshots/linkArtist.js new file mode 100644 index 00000000..43fee88e --- /dev/null +++ b/test/snapshots/linkArtist.js @@ -0,0 +1,26 @@ +import t from 'tap'; + +import {testContentFunctions} from './_support.js'; + +testContentFunctions(t, 'linkArtist', (t, evaluate) => { + evaluate.snapshot({ + name: 'linkArtist', + args: [ + { + name: `Toby Fox`, + directory: `toby-fox`, + } + ], + }); + + evaluate.snapshot({ + name: 'linkArtist', + args: [ + { + name: 'ICCTTCMDMIROTMCWMWFTPFTDDOTARHPOESWGBTWEATFCWSEBTSSFOFG', + nameShort: '55gore', + directory: '55gore', + }, + ], + }, v => v.slot('preferShortName', true)); +}); -- cgit 1.3.0-6-gf8a5