M5: Energy view — per-metric decimal formatting and chart auto-refresh toggle
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Tests for EnergyPage (M5-T06).
|
||||
* Tests for EnergyPage (M5-T06 + M5-polish).
|
||||
*
|
||||
* Coverage:
|
||||
* 1. Renders device list from GET /api/modbus/devices.
|
||||
@@ -10,6 +10,7 @@
|
||||
* 6. Delete 409 error shows friendly hint in confirmation modal.
|
||||
* 7. Test-read button calls POST /api/modbus/devices/{uuid}/test and shows result.
|
||||
* 8. Test-read failure shows error in modal.
|
||||
* 9. Auto-refresh switch is rendered (default on) and can be toggled.
|
||||
*/
|
||||
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||
@@ -321,6 +322,7 @@ describe('EnergyPage — test-read', () => {
|
||||
})
|
||||
|
||||
expect(screen.getByTestId('test-read-ok')).toBeInTheDocument()
|
||||
// Values rendered via formatMetricValue — voltage 230.2 → "230.20"
|
||||
expect(screen.getByTestId('test-read-payload').textContent).toContain('230.2')
|
||||
})
|
||||
|
||||
@@ -345,3 +347,48 @@ describe('EnergyPage — test-read', () => {
|
||||
expect(screen.getByTestId('test-read-error').textContent).toContain('Connection timed out')
|
||||
})
|
||||
})
|
||||
|
||||
describe('EnergyPage — auto-refresh switch', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
setupDefaultMocks()
|
||||
})
|
||||
|
||||
it('renders auto-refresh switch when devices exist', async () => {
|
||||
renderEnergy()
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByTestId('auto-refresh-switch')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
|
||||
it('auto-refresh switch is checked by default (default on)', async () => {
|
||||
renderEnergy()
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByTestId('auto-refresh-switch')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
// Mantine Switch uses role="switch" and places data-testid directly on the
|
||||
// <input> element; query it by the testid or by role.
|
||||
const switchInput = screen.getByRole('switch', { name: /自动刷新/i })
|
||||
expect(switchInput).toBeChecked()
|
||||
})
|
||||
|
||||
it('toggling auto-refresh switch changes its checked state', async () => {
|
||||
renderEnergy()
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByTestId('auto-refresh-switch')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
const switchInput = screen.getByRole('switch', { name: /自动刷新/i })
|
||||
expect(switchInput).toBeChecked()
|
||||
|
||||
fireEvent.click(switchInput)
|
||||
|
||||
await waitFor(() => {
|
||||
expect(switchInput).not.toBeChecked()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user