import { render, screen } from '@testing-library/react';
import { vi } from 'vitest';
import { withTestQueryProvider } from '@/react/test-utils/withTestQuery';
import { withUserProvider } from '@/react/test-utils/withUserProvider';
import { withTestRouter } from '@/react/test-utils/withRouter';
import { UserViewModel } from '@/portainer/models/user';
import { Chart } from '../types';
import { HelmTemplatesSelectedItem } from './HelmTemplatesSelectedItem';
// Sample test data
const mockChart: Chart = {
name: 'test-chart',
description: 'Test Chart Description',
repo: 'https://example.com',
icon: 'test-icon-url',
annotations: {
category: 'database',
},
version: '1.0.1',
versions: ['1.0.0', '1.0.1'],
};
const clearHelmChartMock = vi.fn();
const mockRouterStateService = {
go: vi.fn(),
};
function renderComponent({ selectedChart = mockChart, isAdmin = true } = {}) {
const user = new UserViewModel({ Username: 'user', Role: isAdmin ? 1 : 2 });
const Wrapped = withTestQueryProvider(
withUserProvider(
withTestRouter(() => (
)),
user
)
);
return {
...render(),
user,
mockRouterStateService,
};
}
describe('HelmTemplatesSelectedItem', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('should display selected chart information', () => {
renderComponent();
// Check for chart details
expect(screen.getByText('test-chart')).toBeInTheDocument();
expect(screen.getByText('Test Chart Description')).toBeInTheDocument();
expect(screen.getByText('Clear selection')).toBeInTheDocument();
expect(screen.getByText('https://example.com')).toBeInTheDocument();
});
});