import React from 'react' import { render, screen, fireEvent } from '@testing-library/react' import { Provider } from 'react-redux' import { createStore, combineReducers } from 'redux' import { describe, it, beforeEach } from 'vitest' import ActivityPanel from './ActivityPanel' import { activityReducer } from '../reducers' import config from '../config' import subsonic from '../subsonic' vi.mock('../subsonic', () => ({ default: { getScanStatus: vi.fn(() => Promise.resolve({ json: { 'subsonic-response': { status: 'ok', scanStatus: { error: 'Scan failed' }, }, }, }), ), startScan: vi.fn(), }, })) describe('', () => { let store beforeEach(() => { store = createStore(combineReducers({ activity: activityReducer }), { activity: { scanStatus: { scanning: false, folderCount: 0, count: 0, error: 'Scan failed', elapsedTime: 0, }, serverStart: { version: config.version, startTime: Date.now() }, }, }) }) it('clears the error icon after opening the panel', () => { render( , ) const button = screen.getByRole('button') expect(screen.getByTestId('activity-error-icon')).toBeInTheDocument() fireEvent.click(button) expect(screen.getByTestId('activity-ok-icon')).toBeInTheDocument() expect(screen.getByText('Scan failed')).toBeInTheDocument() }) })