// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
import { fireEvent, render, screen } from '@testing-library/react';
import { describe, expect, it, vi } from 'vitest';
import { InterruptedRunBanner } from '@/components/ChatBox/InterruptedRunBanner';
const props = {
title: 'Run interrupted',
description: 'Completed work is saved.',
resumeLabel: 'Resume',
resumingLabel: 'Resuming…',
cancelLabel: 'Cancel Run',
cancellingLabel: 'Cancelling…',
onResume: vi.fn(),
onCancel: vi.fn(),
};
describe('InterruptedRunBanner', () => {
it('offers explicit Resume and Cancel actions', () => {
const onResume = vi.fn();
const onCancel = vi.fn();
render(
);
expect(screen.getByText('Run interrupted')).toBeInTheDocument();
expect(screen.getByText('#1')).toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: 'Resume' }));
fireEvent.click(screen.getByRole('button', { name: 'Cancel Run' }));
expect(onResume).toHaveBeenCalledOnce();
expect(onCancel).toHaveBeenCalledOnce();
});
it('locks both actions while Resume admission is in flight', () => {
render();
expect(screen.getByRole('button', { name: 'Resuming…' })).toBeDisabled();
expect(screen.getByRole('button', { name: 'Cancel Run' })).toBeDisabled();
});
it('renders cloud-restored history without execution actions', () => {
render(
);
expect(screen.getByText('History restored from cloud')).toBeInTheDocument();
expect(screen.queryByRole('button', { name: 'Resume' })).toBeNull();
expect(screen.queryByRole('button', { name: 'Cancel Run' })).toBeNull();
});
});