Skip to content

Commit

Permalink
bump packages
Browse files Browse the repository at this point in the history
  • Loading branch information
OliwiaGowor committed Oct 11, 2024
1 parent 374c9d0 commit dcd5af0
Show file tree
Hide file tree
Showing 6 changed files with 345 additions and 145 deletions.
277 changes: 148 additions & 129 deletions package-lock.json

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@
"@types/jsonpath": "^0.2.0",
"@types/pluralize": "^0.0.29",
"@ui-schema/ui-schema": "^0.4.5",
"@ui5/webcomponents": "^1.24.0",
"@ui5/webcomponents-base": "^1.24.0",
"@ui5/webcomponents-fiori": "^1.24.0",
"@ui5/webcomponents-icons": "^1.24.0",
"@ui5/webcomponents-icons-tnt": "^1.24.0",
"@ui5/webcomponents-react": "~1.28.1",
"@ui5/webcomponents": "^1.24.1",
"@ui5/webcomponents-base": "^1.24.1",
"@ui5/webcomponents-fiori": "^1.24.1",
"@ui5/webcomponents-icons": "^1.24.1",
"@ui5/webcomponents-icons-tnt": "^1.24.1",
"@ui5/webcomponents-react": "^1.28.2",
"@ui5/webcomponents-react-base": "^1.28.1",
"@ui5/webcomponents-react-charts": "^1.28.1",
"classnames": "^2.2.6",
Expand Down
7 changes: 7 additions & 0 deletions src/setupTests.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Enzyme from 'enzyme';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
import { act } from '@testing-library/react';
import ResizeObserverPolyfill from 'resize-observer-polyfill';
import { cleanup } from '@testing-library/react';

Element.prototype.scroll = () => {};

Expand Down Expand Up @@ -103,3 +104,9 @@ vi.mock('react-i18next', () => ({
}));

Enzyme.configure({ adapter: new Adapter() });

afterEach(() => {
cleanup();
vi.clearAllMocks();
vi.useRealTimers();
});
191 changes: 182 additions & 9 deletions src/shared/components/Selector/tests/Selector.test.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
import { render, act, waitFor } from 'testing/reactTestingUtils';
import { act, render, waitFor } from 'testing/reactTestingUtils';
import { useTranslation } from 'react-i18next';
import { Selector } from '../Selector';
import { ThemeProvider } from '@ui5/webcomponents-react';
import { cleanup } from '@testing-library/react';
import { afterEach } from 'vitest';

vi.mock('../../RelatedPods.js', () => ({
RelatedPods: ({ namespace }) => <div>Related Pods for {namespace}</div>,
}));

describe('Selector tests', () => {
afterEach(async () => {
await cleanup();
await vi.clearAllMocks();
await vi.useRealTimers();
});

describe('Selector tests for Kubernetes resources', () => {
it('Does not render Selector when selector is null', async () => {
const { queryByText } = render(
Expand All @@ -28,5 +21,185 @@ describe('Selector tests', () => {
});
});
});

it('Renders default message when selector labels are null', async () => {
const mockedSelector = {};

const { getByText } = render(
<ThemeProvider>
<Selector selector={mockedSelector} />
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(
getByText('selector.message.empty-selector'),
).toBeInTheDocument();
});
});
});

it('Renders Selector with labels and pods list', async () => {
const mockedSelector = {
matchLabels: {
test: 'test',
},
};

const { getByText } = render(
<ThemeProvider>
<Selector
selector={mockedSelector}
namespace="test-namespace"
labels={mockedSelector.matchLabels}
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(
getByText('Related Pods for test-namespace'),
).toBeInTheDocument();
expect(getByText('test=test')).toBeInTheDocument(); // selector labels
});
});
});

it('Renders Selector with matchExpressions and without pods list', async () => {
const mockedSelector = {
matchLabels: {
test: 'test',
},
matchExpressions: [
{ key: 'test-key', operator: 'In', values: ['test-value'] },
],
};

const { getByText, getAllByText } = render(
<ThemeProvider>
<Selector
selector={mockedSelector}
namespace="namespace"
labels={mockedSelector.matchLabels}
expressions={mockedSelector.matchExpressions}
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(
getAllByText('match-expressions.title')[0],
).toBeInTheDocument(); //title of the matchExpressions table
expect(getAllByText('test=test')[0]).toBeInTheDocument();
expect(getByText('test-key')).toBeInTheDocument(); // matchExpressions elements
expect(getByText('In')).toBeInTheDocument();
});
});
});

it('Renders custom message when selector labels are null ', async () => {
const mockedSelector = {};
const { t } = useTranslation();
const { getByText } = render(
<ThemeProvider>
<Selector
selector={mockedSelector}
message={t('persistent-volume-claims.message.empty-selector')}
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(
getByText('persistent-volume-claims.message.empty-selector'),
).toBeInTheDocument();
});
});
});

it('Renders Selector with custom RelatedResources', async () => {
const mockedSelector = {
matchLabels: {
test: 'test',
},
};
const { getByText } = render(
<ThemeProvider>
<Selector
selector={mockedSelector}
labels={mockedSelector.matchLabels}
namespace="namespace"
RelatedResources={() => <p>Persistent Volumes</p>}
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(getByText('Persistent Volumes')).toBeInTheDocument();
});
});
});
});

describe('Selector tests for Istio resources', () => {
it('Renders message when selector is null', async () => {
const { getByText } = render(
<ThemeProvider>
<Selector selector={null} isIstioSelector />
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(
getByText('selector.message.empty-selector'),
).toBeInTheDocument();
});
});
});

it('Renders Selector with custom title', async () => {
const { t } = useTranslation();

const { getByText } = render(
<ThemeProvider>
<Selector
selector={null}
title={t('workload-selector-title')}
isIstioSelector
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(getByText('workload-selector-title')).toBeInTheDocument();
});
});
});

it('Renders Selector with non-empty labels', async () => {
const mockedSelector = {
matchLabels: {
test: 'test',
},
};

const { getByText } = render(
<ThemeProvider>
<Selector
selector={mockedSelector}
labels={mockedSelector.matchLabels}
namespace="namespace"
isIstioSelector
RelatedResources={() => <p>Custom Resources</p>}
/>
</ThemeProvider>,
);
await waitFor(async () => {
await act(async () => {
expect(getByText('Custom Resources')).toBeInTheDocument();
expect(getByText('test=test')).toBeInTheDocument();
});
});
});
});
});
2 changes: 1 addition & 1 deletion src/testing/reactTestingUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type CustomRenderOptions = Omit<RenderOptions, 'wrapper'> & {
const customRender = (ui: ReactElement, options?: CustomRenderOptions) => {
const AllTheProviders = ({ children }: { children: ReactNode }) => {
return (
<RecoilRoot initializeState={options?.initializeState}>
<RecoilRoot initializeState={options?.initializeState ?? (() => {})}>
<BrowserRouter>{children}</BrowserRouter>
</RecoilRoot>
);
Expand Down
1 change: 1 addition & 0 deletions vitest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export default mergeConfig(
viteConfig,
defineConfig({
test: {
environment: 'jsdom',
plugins: [viteTsconfigPaths()],
globals: true, // Enable globals for Vitest
setupFiles: ['./src/setupTests.js'],
Expand Down

0 comments on commit dcd5af0

Please sign in to comment.