import type { ReactElement, ReactNode } from 'react';
import { describe, expect, it } from 'vitest';
import { Avatar } from '../../identity/components/Avatar';
import { Name } from '../../identity/components/Name';
import { type ServerComponentPayload, findComponent } from './findComponent';
describe('findComponent', () => {
it('should find the Name component in the array', () => {
const childrenArray: ReactNode[] = [
Random div
,
,
,
];
const foundNameComponent = childrenArray.find(findComponent(Name));
expect(foundNameComponent).toBeDefined();
expect(foundNameComponent?.type).toBe(Name);
});
it('should find the Avatar component in the array', () => {
const childrenArray: ReactNode[] = [
Random div
,
,
,
];
const foundAgeComponent = childrenArray.find(findComponent(Avatar));
expect(foundAgeComponent).toBeDefined();
expect(foundAgeComponent?.type).toBe(Avatar);
});
it('should return undefined if the component is not in the array', () => {
const childrenArray: ReactNode[] = [Random div
];
const foundNameComponent = childrenArray.find(findComponent(Name));
expect(foundNameComponent).toBeUndefined();
});
it('should find component in Next.js server component payload', () => {
const serverComponent: ReactElement & { type: ServerComponentPayload } = {
type: {
_payload: {
value: ['/path/to/Name', ['chunk1', 'chunk2'], 'Name'],
},
},
props: { address: '0x123456789' },
key: null,
ref: null,
} as unknown as ReactElement & { type: ServerComponentPayload };
const childrenArray: ReactNode[] = [
Random div
,
serverComponent,
,
];
const foundNameComponent = childrenArray.find(findComponent(Name));
expect(foundNameComponent).toBeDefined();
});
it('should return undefined for server component with different name', () => {
const serverComponent: ReactElement & { type: ServerComponentPayload } = {
type: {
_payload: {
value: ['/path/to/Different', ['chunk1'], 'Different'],
},
},
props: {},
key: null,
ref: null,
} as unknown as ReactElement & { type: ServerComponentPayload };
const childrenArray: ReactNode[] = [serverComponent];
const foundNameComponent = childrenArray.find(findComponent(Name));
expect(foundNameComponent).toBeUndefined();
});
});