import React from 'react';
import { render, screen } from '@testing-library/react';
import '@testing-library/jest-dom';
import NameContainer from './NameContainer';
import { NOT_READY_COLOR } from '../../../constants/colors';
jest.mock('./AnimatedOverlay/AnimatedOverlay.jsx', () => () => {
return ;
});
describe('NameContainer component', () => {
let player;
let time;
beforeEach(() => {
player = {
name: 'TestPlayer',
ready: false,
color: 'blue',
nowMoving: false,
};
time = 0;
});
it('renders without crashing', () => {
render();
});
it('renders player name', () => {
render();
expect(screen.getByText(player.name)).toBeInTheDocument();
});
it('applies grey color when player is not ready', () => {
player.ready = false;
render();
const container = screen.getByText(player.name).closest('div');
expect(container).toHaveStyle({ backgroundColor: NOT_READY_COLOR });
});
it('applies player colors as background when player is ready', () => {
player.ready = true;
render();
const container = screen.getByText(player.name).closest('div');
expect(container).toHaveStyle({ backgroundColor: player.color });
});
it('renders AnimatedOverlay when player is nowMoving', () => {
const movingPlayer = { ...player, nowMoving: true };
render();
expect(screen.getByTestId('animated-overlay')).toBeInTheDocument();
});
it('does not render AnimatedOverlay when player is not nowMoving', () => {
render();
expect(screen.queryByTestId('animated-overlay')).toBeNull();
});
});