import { renderWithProviders as render, screen } from '../../../test/render';
import { describe, it, expect } from 'vitest';
import { PasswordStrengthMeter } from './PasswordStrengthMeter';
import React from 'react';
describe('PasswordStrengthMeter', () => {
it('renders nothing when strength is null', () => {
const { container } = render();
expect(container).toBeEmptyDOMElement();
});
it('renders the weak state with its label and a 1/3-width bar', () => {
const { container } = render();
expect(screen.getByText('Senha fraca')).toBeInTheDocument();
const bar = container.querySelector('.w-1\\/3');
expect(bar).toBeInTheDocument();
expect(bar).toHaveClass('bg-destructive');
});
it('renders the medium state with its label and a 2/3-width bar', () => {
const { container } = render();
expect(screen.getByText('Senha média')).toBeInTheDocument();
const bar = container.querySelector('.w-2\\/3');
expect(bar).toBeInTheDocument();
});
it('renders the strong state with its label and a full-width bar', () => {
const { container } = render();
expect(screen.getByText('Senha forte')).toBeInTheDocument();
const bar = container.querySelector('.w-full');
expect(bar).toBeInTheDocument();
});
it('colors the label to match the current strength', () => {
const { rerender } = render();
expect(screen.getByText('Senha fraca')).toHaveClass('text-destructive');
rerender();
expect(screen.getByText('Senha forte')).toHaveClass('text-[var(--chart-2)]');
});
});