mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 07:49:41 +02:00
fix(kubernetes): events api to call the backend [R8S-243] (#563)
This commit is contained in:
parent
32ef208278
commit
07dfd981a2
26 changed files with 750 additions and 217 deletions
|
@ -0,0 +1,83 @@
|
|||
import { render, screen } from '@testing-library/react';
|
||||
|
||||
import { withTestQueryProvider } from '@/react/test-utils/withTestQuery';
|
||||
import { withTestRouter } from '@/react/test-utils/withRouter';
|
||||
import { UserViewModel } from '@/portainer/models/user';
|
||||
import { withUserProvider } from '@/react/test-utils/withUserProvider';
|
||||
import { TableSettings } from '@/react/kubernetes/datatables/DefaultDatatableSettings';
|
||||
|
||||
import { TableState } from '@@/datatables/useTableState';
|
||||
|
||||
import { Event } from '../../queries/types';
|
||||
|
||||
import { EventsDatatable } from './EventsDatatable';
|
||||
|
||||
// Mock the necessary hooks and dependencies
|
||||
const mockTableState: TableState<TableSettings> = {
|
||||
sortBy: { id: 'Date', desc: true },
|
||||
pageSize: 10,
|
||||
search: '',
|
||||
autoRefreshRate: 0,
|
||||
showSystemResources: false,
|
||||
setSortBy: vi.fn(),
|
||||
setPageSize: vi.fn(),
|
||||
setSearch: vi.fn(),
|
||||
setAutoRefreshRate: vi.fn(),
|
||||
setShowSystemResources: vi.fn(),
|
||||
};
|
||||
|
||||
vi.mock('../../datatables/default-kube-datatable-store', () => ({
|
||||
useKubeStore: () => mockTableState,
|
||||
}));
|
||||
|
||||
function renderComponent() {
|
||||
const user = new UserViewModel({ Username: 'user' });
|
||||
|
||||
const events: Event[] = [
|
||||
{
|
||||
type: 'Warning',
|
||||
name: 'name',
|
||||
message: 'not sure if this what you want to do',
|
||||
namespace: 'default',
|
||||
reason: 'unknown',
|
||||
count: 1,
|
||||
eventTime: new Date('2025-01-02T15:04:05Z'),
|
||||
uid: '4500fc9c-0cc8-4695-b4c4-989ac021d1d6',
|
||||
involvedObject: {
|
||||
kind: 'configMap',
|
||||
uid: '35',
|
||||
name: 'name',
|
||||
namespace: 'default',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const Wrapped = withTestQueryProvider(
|
||||
withUserProvider(
|
||||
withTestRouter(() => (
|
||||
<EventsDatatable
|
||||
dataset={events}
|
||||
tableState={mockTableState}
|
||||
isLoading={false}
|
||||
data-cy="k8sNodeDetail-eventsTable"
|
||||
noWidget
|
||||
/>
|
||||
)),
|
||||
user
|
||||
)
|
||||
);
|
||||
return { ...render(<Wrapped />), events };
|
||||
}
|
||||
|
||||
describe('EventsDatatable', () => {
|
||||
it('should display events when data is loaded', async () => {
|
||||
const { events } = renderComponent();
|
||||
const event = events[0];
|
||||
|
||||
expect(screen.getByText(event.message || '')).toBeInTheDocument();
|
||||
expect(screen.getAllByText(event.type || '')).toHaveLength(2);
|
||||
expect(screen.getAllByText(event.involvedObject.kind || '')).toHaveLength(
|
||||
2
|
||||
);
|
||||
});
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
import { Event } from 'kubernetes-types/core/v1';
|
||||
import { History } from 'lucide-react';
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
import { Event } from '@/react/kubernetes/queries/types';
|
||||
import { IndexOptional } from '@/react/kubernetes/configs/types';
|
||||
import { TableSettings } from '@/react/kubernetes/datatables/DefaultDatatableSettings';
|
||||
|
||||
|
@ -38,7 +38,7 @@ export function EventsDatatable({
|
|||
isLoading={isLoading}
|
||||
title={title}
|
||||
titleIcon={titleIcon}
|
||||
getRowId={(row) => row.metadata?.uid || ''}
|
||||
getRowId={(row) => row.uid || ''}
|
||||
disableSelect
|
||||
renderTableSettings={() => (
|
||||
<TableSettingsMenu>
|
||||
|
|
|
@ -29,9 +29,7 @@ export function ResourceEventsDatatable({
|
|||
params: { endpointId },
|
||||
} = useCurrentStateAndParams();
|
||||
|
||||
const params = resourceId
|
||||
? { fieldSelector: `involvedObject.uid=${resourceId}` }
|
||||
: {};
|
||||
const params = resourceId ? { resourceId: `${resourceId}` } : {};
|
||||
const resourceEventsQuery = useEvents(endpointId, {
|
||||
namespace,
|
||||
params,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { Row } from '@tanstack/react-table';
|
||||
import { Event } from 'kubernetes-types/core/v1';
|
||||
|
||||
import { Event } from '@/react/kubernetes/queries/types';
|
||||
|
||||
import { Badge, BadgeType } from '@@/Badge';
|
||||
import { filterHOC } from '@@/datatables/Filter';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { createColumnHelper } from '@tanstack/react-table';
|
||||
import { Event } from 'kubernetes-types/core/v1';
|
||||
|
||||
import { Event } from '@/react/kubernetes/queries/types';
|
||||
|
||||
export const columnHelper = createColumnHelper<Event>();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { Row } from '@tanstack/react-table';
|
||||
import { Event } from 'kubernetes-types/core/v1';
|
||||
|
||||
import { Event } from '@/react/kubernetes/queries/types';
|
||||
|
||||
import { filterHOC } from '@@/datatables/Filter';
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue