chore: Move `InfoPanel` component to `ui-client` package (#37701)
parent
75bd3e4625
commit
e96bb84e4d
@ -1,29 +1,24 @@ |
||||
import { render, screen } from '@testing-library/react'; |
||||
import { composeStories } from '@storybook/react'; |
||||
import { render } from '@testing-library/react'; |
||||
import { axe } from 'jest-axe'; |
||||
|
||||
import RetentionPolicyCallout from './RetentionPolicyCallout'; |
||||
import { createRenteionPolicySettingsMock as createMock } from '../../../tests/mocks/client/mockRetentionPolicySettings'; |
||||
import { createFakeRoom } from '../../../tests/mocks/data'; |
||||
import * as stories from './RetentionPolicyCallout.stories'; |
||||
|
||||
jest.useFakeTimers(); |
||||
const testCases = Object.values(composeStories(stories)).map((Story) => [Story.storyName || 'Story', Story]); |
||||
|
||||
beforeEach(() => { |
||||
test.each(testCases)(`renders %s without crashing`, async (_storyname, Story) => { |
||||
jest.useFakeTimers(); |
||||
jest.setSystemTime(new Date(2024, 5, 1, 0, 0, 0)); |
||||
|
||||
const { baseElement } = render(<Story />); |
||||
expect(baseElement).toMatchSnapshot(); |
||||
}); |
||||
|
||||
describe('RetentionPolicyCallout', () => { |
||||
it('Should render callout if settings are valid', () => { |
||||
const fakeRoom = createFakeRoom({ t: 'c' }); |
||||
render(<RetentionPolicyCallout room={fakeRoom} />, { |
||||
wrapper: createMock({ appliesToChannels: true, TTLChannels: 60000 }), |
||||
}); |
||||
expect(screen.getByRole('alert')).toHaveTextContent('a minute June 1, 2024 at 12:30 AM'); |
||||
}); |
||||
test.each(testCases)('%s should have no a11y violations', async (_storyname, Story) => { |
||||
// We have to use real timers here because `jest-axe` is breaking otherwise
|
||||
jest.useRealTimers(); |
||||
const { container } = render(<Story />); |
||||
|
||||
it('Should not render callout if settings are invalid', () => { |
||||
const fakeRoom = createFakeRoom({ t: 'c' }); |
||||
render(<RetentionPolicyCallout room={fakeRoom} />, { |
||||
wrapper: createMock({ appliesToChannels: true, TTLChannels: 60000, advancedPrecisionCron: '* * * 12 *', advancedPrecision: true }), |
||||
}); |
||||
expect(screen.queryByRole('alert')).not.toBeInTheDocument(); |
||||
}); |
||||
const results = await axe(container); |
||||
expect(results).toHaveNoViolations(); |
||||
}); |
||||
|
||||
@ -0,0 +1,32 @@ |
||||
import type { Meta, StoryFn } from '@storybook/react'; |
||||
|
||||
import RetentionPolicyCallout from './RetentionPolicyCallout'; |
||||
import { createRenteionPolicySettingsMock as createMock } from '../../../tests/mocks/client/mockRetentionPolicySettings'; |
||||
import { createFakeRoom } from '../../../tests/mocks/data'; |
||||
|
||||
export default { |
||||
component: RetentionPolicyCallout, |
||||
} satisfies Meta<typeof RetentionPolicyCallout>; |
||||
|
||||
const fakeRoom = createFakeRoom(); |
||||
|
||||
const DefaultWrapper = createMock({ appliesToChannels: true, TTLChannels: 60000 }); |
||||
|
||||
export const Default: StoryFn<typeof RetentionPolicyCallout> = () => ( |
||||
<DefaultWrapper> |
||||
<RetentionPolicyCallout room={fakeRoom} /> |
||||
</DefaultWrapper> |
||||
); |
||||
|
||||
const InvalidSettingsWrapper = createMock({ |
||||
appliesToChannels: true, |
||||
TTLChannels: 60000, |
||||
advancedPrecisionCron: '* * * 12 * *', |
||||
advancedPrecision: true, |
||||
}); |
||||
|
||||
export const InvalidSettings: StoryFn<typeof RetentionPolicyCallout> = () => ( |
||||
<InvalidSettingsWrapper> |
||||
<RetentionPolicyCallout room={fakeRoom} /> |
||||
</InvalidSettingsWrapper> |
||||
); |
||||
Loading…
Reference in new issue