import { render, screen } from '@testing-library/react';
import { type Mock, describe, expect, it, vi } from 'vitest';
import { Message } from '../types';
import { SignatureLabel } from '../components/SignatureLabel';
import { useSignatureContext } from '../components/SignatureProvider';
vi.mock('../components/SignatureProvider', () => ({
useSignatureContext: vi.fn(),
}));
describe('SignatureLabel', () => {
it('should render success message', () => {
(useSignatureContext as Mock).mockReturnValue({
lifecycleStatus: {
statusName: 'success',
statusData: {
signature: '0x123',
type: Message.TYPED_DATA,
},
},
});
render();
expect(screen.getByText('Success')).toBeInTheDocument();
});
it('should render error message', () => {
(useSignatureContext as Mock).mockReturnValue({
lifecycleStatus: {
statusName: 'error',
statusData: {
code: 'TEST01',
message: 'Test error message',
type: Message.TYPED_DATA,
},
},
});
render();
expect(screen.getByText('Test error message')).toBeInTheDocument();
});
it('should render pending message', () => {
(useSignatureContext as Mock).mockReturnValue({
lifecycleStatus: {
statusName: 'pending',
statusData: {
type: Message.TYPED_DATA,
},
},
});
render();
expect(screen.getByText('Confirm in wallet')).toBeInTheDocument();
});
it('should apply custom className', () => {
(useSignatureContext as Mock).mockReturnValue({
lifecycleStatus: {
statusName: 'success',
statusData: {
signature: '0x123',
type: Message.TYPED_DATA,
},
},
});
render();
expect(screen.getByText('Success')).toHaveClass('custom-class');
});
it('should not render if no label', () => {
(useSignatureContext as Mock).mockReturnValue({
lifecycleStatus: {
statusName: 'init',
statusData: null,
},
});
render();
expect(screen.queryByTestId('ockSignatureLabel')).not.toBeInTheDocument();
});
});