Add presets.js as single source of truth for filter definitions

This commit is contained in:
Keith Solomon
2026-08-05 16:05:13 -05:00
parent dfd2bbe3a3
commit c485816135
2 changed files with 119 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
import { PRESETS, DEFAULT_PRESET, isValidPresetSlug } from '../../src/presets';
describe( 'presets', () => {
test( 'exports 8 presets', () => {
expect( PRESETS ).toHaveLength( 8 );
} );
test( 'each preset has the required shape', () => {
for ( const preset of PRESETS ) {
expect( preset ).toEqual(
expect.objectContaining( {
slug: expect.stringMatching( /^[a-z-]+$/ ),
label: expect.any( String ),
color: expect.stringMatching( /^#[0-9a-f]{3,6}$/i ),
cssFilter: expect.any( String ),
} )
);
}
} );
test( 'slugs are unique', () => {
const slugs = PRESETS.map( ( p ) => p.slug );
expect( new Set( slugs ).size ).toBe( slugs.length );
} );
test( 'normal preset has filter: none', () => {
const normal = PRESETS.find( ( p ) => p.slug === 'normal' );
expect( normal.cssFilter ).toBe( 'none' );
} );
test( 'DEFAULT_PRESET is "normal" and exists in PRESETS', () => {
expect( DEFAULT_PRESET ).toBe( 'normal' );
expect( PRESETS.map( ( p ) => p.slug ) ).toContain( DEFAULT_PRESET );
} );
test( 'isValidPresetSlug returns true for known slugs', () => {
expect( isValidPresetSlug( 'normal' ) ).toBe( true );
expect( isValidPresetSlug( 'dramatic' ) ).toBe( true );
} );
test( 'isValidPresetSlug returns false for unknown slugs', () => {
expect( isValidPresetSlug( 'foobar' ) ).toBe( false );
expect( isValidPresetSlug( '' ) ).toBe( false );
} );
} );