/**
* Copyright (c) Paymium.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root of this projects source tree.
*/
import React from 'react';
import { render, screen } from '@crossed/test';
import { ButtonText } from '../Text';
import { buttonContext } from '../context';
describe('ButtonText', () => {
const setTextIdMock = jest.fn();
const renderWithContext = (props: any, contextValue: any) => {
return render(
);
};
it('renders correctly with default props', () => {
renderWithContext(
{ children: 'Hello, World!' },
{
variant: 'primary',
state: {},
disabled: false,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
const text = screen.getByText('Hello, World!');
expect(text).toBeTruthy();
});
it('applies styles based on the variant', () => {
renderWithContext(
{ children: 'Primary Text' },
{
variant: 'primary',
state: {},
disabled: false,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
const text = screen.getByText('Primary Text');
expect(text).toHaveClass(
`color-[var(--components--action-primary-default-text)]`
); // Exemple de vérification
});
it('updates the textId when id changes', () => {
const { rerender } = renderWithContext(
{ id: 'new-id' },
{
variant: 'secondary',
state: {},
disabled: false,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
expect(setTextIdMock).toHaveBeenCalledWith('new-id');
rerender(
);
expect(setTextIdMock).toHaveBeenCalledWith('another-id');
});
it('applies hover styles when state.hover is true', () => {
renderWithContext(
{ children: 'Hover Text' },
{
variant: 'primary',
state: { hover: true },
disabled: false,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
const text = screen.getByText('Hover Text');
expect(text).toHaveClass(
`color-[var(--components--action-primary-hover-text)]`
); // Exemple de vérification
});
it('applies disabled styles when disabled is true', () => {
renderWithContext(
{ children: 'Disabled Text' },
{
variant: 'primary',
state: {},
disabled: true,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
const text = screen.getByText('Disabled Text');
expect(text).toHaveClass(
`color-[var(--components--action-primary-default-text)]`
);
});
it('passes additional props to the underlying Text component', () => {
renderWithContext(
{ children: 'Custom Props', style: { color: 'red' } },
{
variant: 'primary',
state: {},
disabled: false,
setTextId: setTextIdMock,
textId: 'text-id',
}
);
const text = screen.getByText('Custom Props');
expect(text).toHaveStyle('color: rgb(255, 0, 0)');
expect(text).toHaveClass(
`color-[var(--components--action-primary-default-text)]`
);
});
});