/**
* 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, fireEvent } from '@crossed/test';
import '@testing-library/jest-dom';
import { Box } from '../Box';
import { inlineStyle } from '@crossed/styled';
describe('Box component', () => {
it('renders correctly with default props', () => {
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toBeInTheDocument();
expect(boxElement).toHaveClass('display-[flex]');
});
it('applies center styles when "center" is true', () => {
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toHaveClass('align-items-[center]');
expect(boxElement).toHaveClass('justify-content-[center]');
});
it('applies custom gap styles', () => {
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toHaveClass('gap-[var(--space-3xl)]');
});
it('applies justify-content and align-items styles', () => {
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toHaveClass('justify-content-[space-between]');
expect(boxElement).toHaveClass('align-items-[flex-end]');
});
it('applies custom styles via "style" prop', () => {
const customStyle = inlineStyle(() => ({
base: { backgroundColor: 'blue' },
}));
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toHaveClass('background-color-[blue]');
});
it('applies align-self styles', () => {
render();
const boxElement = screen.getByTestId('box');
expect(boxElement).toHaveClass('align-self-[center]');
});
it('Pressable box event hover', () => {
const onPress = jest.fn();
render();
const boxElement = screen.getByTestId('box');
fireEvent.pointerEnter(boxElement);
expect(onPress).toBeCalledTimes(1);
});
it('Pressable box event onPress', () => {
const onPress = jest.fn();
render();
const boxElement = screen.getByTestId('box');
fireEvent.click(boxElement);
expect(onPress).toBeCalledTimes(1);
});
it('view box not event onPress', () => {
const onPress = jest.fn();
render();
const boxElement = screen.getByTestId('box');
fireEvent.click(boxElement);
expect(onPress).toBeCalledTimes(0);
});
});