refactor: BaseCard hard style shadow, SocialCard blocking lists, AgentAvatar ZFC states
This commit is contained in:
parent
54729c72f6
commit
c74a4098e7
9 changed files with 231 additions and 85 deletions
59
tests/components/shared/base-card.test.tsx
Normal file
59
tests/components/shared/base-card.test.tsx
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import { describe, it, before } from 'node:test';
|
||||
import assert from 'node:assert';
|
||||
import React from 'react';
|
||||
|
||||
// Shim React for the test environment to support JSX execution
|
||||
before(() => {
|
||||
// @ts-ignore
|
||||
global.React = React;
|
||||
});
|
||||
|
||||
describe('BaseCard Component Contract', () => {
|
||||
it('exports BaseCard component', async () => {
|
||||
const mod = await import('../../../src/components/shared/base-card');
|
||||
assert.ok(mod.BaseCard, 'BaseCard should be exported');
|
||||
assert.equal(typeof mod.BaseCard, 'function', 'BaseCard should be a function/component');
|
||||
});
|
||||
});
|
||||
|
||||
describe('BaseCard Styling Logic', () => {
|
||||
it('should be possible to import the component', async () => {
|
||||
const mod = await import('../../../src/components/shared/base-card');
|
||||
assert.ok(mod.BaseCard);
|
||||
});
|
||||
|
||||
it('applies correct status border class for "ready" status', async () => {
|
||||
const { BaseCard } = await import('../../../src/components/shared/base-card');
|
||||
// @ts-ignore - status prop not yet implemented in production code
|
||||
const element = BaseCard({ children: 'test', status: 'ready' }) as any;
|
||||
|
||||
const className = element.props.className || '';
|
||||
assert.ok(
|
||||
className.includes('border-[var(--status-ready)]') || className.includes('border-teal-500'), // Temporary check
|
||||
`Expected className to contain status-ready border, but got: ${className}`
|
||||
);
|
||||
});
|
||||
|
||||
it('applies correct status border class for "blocked" status', async () => {
|
||||
const { BaseCard } = await import('../../../src/components/shared/base-card');
|
||||
// @ts-ignore - status prop not yet implemented
|
||||
const element = BaseCard({ children: 'test', status: 'blocked' }) as any;
|
||||
|
||||
const className = element.props.className || '';
|
||||
assert.ok(
|
||||
className.includes('border-[var(--status-blocked)]') || className.includes('border-amber-500'),
|
||||
`Expected className to contain status-blocked border, but got: ${className}`
|
||||
);
|
||||
});
|
||||
|
||||
it('applies selection ring when selected prop is true', async () => {
|
||||
const { BaseCard } = await import('../../../src/components/shared/base-card');
|
||||
const element = BaseCard({ children: 'test', selected: true }) as any;
|
||||
|
||||
const className = element.props.className || '';
|
||||
assert.ok(
|
||||
className.includes('ring-1') && className.includes('ring-amber-500/30'),
|
||||
`Expected className to contain selection ring, but got: ${className}`
|
||||
);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue