mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
import { renderToStaticMarkup } from 'react-dom/server';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import {
|
|
buildDesignSystemCreateSelection,
|
|
defaultDesignSystemSelection,
|
|
NewProjectPanel,
|
|
} from '../../src/components/NewProjectPanel';
|
|
import type { DesignSystemSummary, SkillSummary } from '../../src/types';
|
|
|
|
const skills: SkillSummary[] = [
|
|
{
|
|
id: 'prototype-skill',
|
|
name: 'Prototype',
|
|
description: 'Build prototypes',
|
|
mode: 'prototype',
|
|
surface: 'web',
|
|
previewType: 'html',
|
|
designSystemRequired: true,
|
|
defaultFor: ['prototype'],
|
|
triggers: [],
|
|
upstream: null,
|
|
hasBody: true,
|
|
examplePrompt: 'Build a prototype.',
|
|
},
|
|
];
|
|
|
|
const designSystems: DesignSystemSummary[] = [
|
|
{
|
|
id: 'clay',
|
|
title: 'Clay',
|
|
summary: 'Friendly tactile product UI.',
|
|
category: 'Product',
|
|
swatches: ['#f4efe7', '#25211d'],
|
|
},
|
|
];
|
|
|
|
describe('NewProjectPanel design system defaults', () => {
|
|
it('uses the configured default design system when it exists in the catalog', () => {
|
|
expect(defaultDesignSystemSelection('clay', designSystems)).toEqual(['clay']);
|
|
expect(defaultDesignSystemSelection('missing', designSystems)).toEqual([]);
|
|
expect(defaultDesignSystemSelection(null, designSystems)).toEqual([]);
|
|
});
|
|
|
|
it('shows the configured default design system as the active project selection', () => {
|
|
const markup = renderToStaticMarkup(
|
|
<NewProjectPanel
|
|
skills={skills}
|
|
designSystems={designSystems}
|
|
defaultDesignSystemId="clay"
|
|
templates={[]}
|
|
promptTemplates={[]}
|
|
onCreate={vi.fn()}
|
|
/>,
|
|
);
|
|
|
|
expect(markup).toContain('Clay');
|
|
expect(markup).toContain('Default');
|
|
expect(markup).not.toContain('Freeform');
|
|
});
|
|
|
|
it('keeps media project creation from inheriting a hidden design system pick', () => {
|
|
expect(buildDesignSystemCreateSelection(true, ['clay', 'bmw'])).toEqual({
|
|
primary: 'clay',
|
|
inspirations: ['bmw'],
|
|
});
|
|
expect(buildDesignSystemCreateSelection(false, ['clay', 'bmw'])).toEqual({
|
|
primary: null,
|
|
inspirations: [],
|
|
});
|
|
});
|
|
});
|