mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
// @vitest-environment jsdom
|
|
|
|
import { cleanup, fireEvent, render, screen } from '@testing-library/react';
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { NewProjectPanel } from '../../src/components/NewProjectPanel';
|
|
|
|
describe('NewProjectPanel media provider badges', () => {
|
|
beforeEach(() => {
|
|
vi.stubGlobal('ResizeObserver', class {
|
|
observe() {}
|
|
disconnect() {}
|
|
unobserve() {}
|
|
});
|
|
Element.prototype.scrollIntoView = vi.fn();
|
|
});
|
|
|
|
afterEach(() => {
|
|
cleanup();
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
it('treats daemon-restored apiKeyConfigured providers as configured', () => {
|
|
render(
|
|
<NewProjectPanel
|
|
skills={[]}
|
|
designSystems={[]}
|
|
defaultDesignSystemId={null}
|
|
templates={[]}
|
|
onDeleteTemplate={vi.fn()}
|
|
promptTemplates={[]}
|
|
onCreate={vi.fn()}
|
|
mediaProviders={{
|
|
openai: {
|
|
apiKey: '',
|
|
apiKeyConfigured: true,
|
|
apiKeyTail: '1234',
|
|
baseUrl: '',
|
|
},
|
|
}}
|
|
/>,
|
|
);
|
|
|
|
fireEvent.click(screen.getByRole('tab', { name: 'Media' }));
|
|
fireEvent.click(screen.getByRole('tab', { name: 'Image' }));
|
|
// Model picker is now a combobox — open the popover so the
|
|
// provider group + status badge become visible in the DOM.
|
|
fireEvent.click(screen.getByTestId('model-picker-trigger'));
|
|
|
|
const openaiGroup = screen.getByText('OpenAI').closest('.ds-picker-group');
|
|
expect(openaiGroup?.textContent).toContain('Configured');
|
|
expect(openaiGroup?.textContent).not.toContain('Integrated');
|
|
});
|
|
});
|