|
|
@@ -58,7 +58,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
|
|
|
describe('clear plate button visibility', () => {
|
|
|
it('shows clear plate button when printer state is FINISH', async () => {
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -66,7 +66,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
});
|
|
|
|
|
|
it('shows clear plate button when printer state is FAILED', async () => {
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="FAILED" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="FAILED" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -128,7 +128,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
// still awaiting plate-clear ack. The prompt must still show — the ack state, not
|
|
|
// the reported printer state, is the authoritative signal.
|
|
|
it('shows clear plate button in IDLE state when awaitingPlateClear is true (#961)', async () => {
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="IDLE" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="IDLE" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -137,7 +137,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
|
|
|
it('shows clear plate button with no printerState when awaitingPlateClear is true', async () => {
|
|
|
// State may be null briefly after a reconnect; the widget must still gate on the flag.
|
|
|
- render(<PrinterQueueWidget printerId={1} awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -166,7 +166,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
describe('clear plate action', () => {
|
|
|
it('shows confirmation state after clicking clear plate', async () => {
|
|
|
const user = userEvent.setup();
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -192,7 +192,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
);
|
|
|
|
|
|
const user = userEvent.setup();
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="FAILED" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="FAILED" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
@@ -264,6 +264,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
printerId={1}
|
|
|
printerState="FINISH"
|
|
|
awaitingPlateClear={true}
|
|
|
+ requirePlateClear={true}
|
|
|
loadedFilamentTypes={new Set(['PLA', 'PETG'])}
|
|
|
/>
|
|
|
);
|
|
|
@@ -281,6 +282,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
printerId={1}
|
|
|
printerState="FINISH"
|
|
|
awaitingPlateClear={true}
|
|
|
+ requirePlateClear={true}
|
|
|
loadedFilamentTypes={new Set(['PLA'])}
|
|
|
/>
|
|
|
);
|
|
|
@@ -297,7 +299,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
);
|
|
|
|
|
|
render(
|
|
|
- <PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} />
|
|
|
+ <PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} requirePlateClear={true} />
|
|
|
);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
@@ -378,6 +380,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
printerId={1}
|
|
|
printerState="FINISH"
|
|
|
awaitingPlateClear={true}
|
|
|
+ requirePlateClear={true}
|
|
|
loadedFilamentTypes={new Set(['PETG'])}
|
|
|
/>
|
|
|
);
|
|
|
@@ -437,6 +440,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
printerId={1}
|
|
|
printerState="FINISH"
|
|
|
awaitingPlateClear={true}
|
|
|
+ requirePlateClear={true}
|
|
|
loadedFilamentTypes={new Set(['PETG'])}
|
|
|
loadedFilaments={new Set(['PETG:ffffff'])}
|
|
|
/>
|
|
|
@@ -591,12 +595,15 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- it('shows clear plate button when requirePlateClear is not provided (defaults to true)', async () => {
|
|
|
+ it('shows passive link when requirePlateClear is not provided (defaults to false)', async () => {
|
|
|
render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|
|
|
+ const link = screen.getByRole('link');
|
|
|
+ expect(link).toHaveAttribute('href', '/queue');
|
|
|
});
|
|
|
+
|
|
|
+ expect(screen.queryByText('Clear Plate & Start Next')).not.toBeInTheDocument();
|
|
|
});
|
|
|
|
|
|
it('still shows next item info in passive link when requirePlateClear is false', async () => {
|
|
|
@@ -637,7 +644,7 @@ describe('PrinterQueueWidget - Clear Plate', () => {
|
|
|
http.get('/api/v1/queue/', () => HttpResponse.json(mixedItems)),
|
|
|
);
|
|
|
|
|
|
- render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} />);
|
|
|
+ render(<PrinterQueueWidget printerId={1} printerState="FINISH" awaitingPlateClear={true} requirePlateClear={true} />);
|
|
|
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('Clear Plate & Start Next')).toBeInTheDocument();
|