import { render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' import { makeBudgetToday } from '../test/factories' import { BudgetTodayCard } from './BudgetTodayCard' describe('BudgetTodayCard', () => { it('shows remaining time, usage and the next warning', () => { render() expect(screen.getByText('7h 0m')).toBeInTheDocument() expect(screen.getByText(/1h 0m of 8h 0m used/)).toBeInTheDocument() expect(screen.getByText(/Next warning at 1h 0m remaining/)).toBeInTheDocument() expect(document.querySelector('.budget-meter--ok')).not.toBeNull() }) it('turns the meter amber once a warning has fired', () => { render( , ) expect(document.querySelector('.budget-meter--warn')).not.toBeNull() }) it('says so when no warnings remain', () => { render( , ) expect(screen.getByText(/No further warnings today/)).toBeInTheDocument() expect(document.querySelector('.budget-meter--warn')).not.toBeNull() }) const blockedToday = () => makeBudgetToday({ blocked: true, blocked_at: 1, seconds_used: 28800, seconds_remaining: 0, fraction_used: 1, next_warning_seconds: null, }) it('shows the cutoff badge when blocked', () => { render() expect(screen.getByText(/Cutoff engaged — launchers are masked/)).toBeInTheDocument() expect(document.querySelector('.budget-meter--blocked')).not.toBeNull() }) it('does not claim a mask that is not in place', () => { render() expect( screen.getByText(/Cutoff engaged — launchers are not currently masked/), ).toBeInTheDocument() }) })