mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
Guard expanded backup evidence across workload polling
Issue #1869 reports views resetting during refresh. Exercise the mounted backup coverage view through three replacement workload snapshots so losing expanded restore evidence is caught before release. Confirm each refreshed workload name renders to exclude stale-state false positives. Contract-Neutral: regression coverage only; no runtime or API changes. Change-source: pulse-maintainer
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { cleanup, fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
|
||||
import { Route, Router } from '@solidjs/router';
|
||||
import type { JSX } from 'solid-js';
|
||||
import { createSignal, type JSX } from 'solid-js';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { ProxmoxBackupsTable } from '../ProxmoxBackupsTable';
|
||||
@@ -495,6 +495,31 @@ describe('ProxmoxBackupsTable', () => {
|
||||
expect(screen.getAllByText('Snapshot').length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('keeps coverage evidence expanded across repeated workload snapshots', async () => {
|
||||
mockBackupAPIs();
|
||||
const [workloads, setWorkloads] = createSignal<readonly Resource[]>([workloadResource]);
|
||||
renderInRouter(() => (
|
||||
<ProxmoxBackupsTable emptyIcon={<span />} workloads={workloads()} />
|
||||
));
|
||||
|
||||
await screen.findAllByText('pbs-docker');
|
||||
await fireEvent.click(screen.getByRole('link', { name: /coverage/i }));
|
||||
await fireEvent.click(screen.getByRole('button', { name: /expand details for pbs-docker/i }));
|
||||
|
||||
for (let snapshot = 1; snapshot <= 3; snapshot += 1) {
|
||||
const name = `pbs-docker-snapshot-${snapshot}`;
|
||||
setWorkloads([{ ...workloadResource, name, displayName: name }]);
|
||||
|
||||
// Assert the new snapshot reached the rendered table, rather than merely
|
||||
// checking that a stale expanded row survived.
|
||||
await screen.findAllByText(name);
|
||||
expect(screen.getByRole('columnheader', { name: /posture/i })).toBeInTheDocument();
|
||||
expect(screen.getByText('Restore evidence')).toBeInTheDocument();
|
||||
expect(screen.getAllByText('PVE file').length).toBeGreaterThan(0);
|
||||
expect(screen.getAllByText('Snapshot').length).toBeGreaterThan(0);
|
||||
}
|
||||
});
|
||||
|
||||
it('filters the backup feed by search term', async () => {
|
||||
mockBackupAPIs();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user