Migrate some tests to React Testing Library (#9584)
This commit is contained in:
@@ -15,8 +15,7 @@ limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
// eslint-disable-next-line deprecate/import
|
||||
import { mount } from "enzyme";
|
||||
import { render } from '@testing-library/react';
|
||||
|
||||
import * as TestUtils from "../../../test-utils";
|
||||
import FontScalingPanel from '../../../../src/components/views/settings/FontScalingPanel';
|
||||
@@ -34,9 +33,9 @@ jest.mock(
|
||||
describe('FontScalingPanel', () => {
|
||||
it('renders the font scaling UI', () => {
|
||||
TestUtils.stubClient();
|
||||
const wrapper = mount(
|
||||
const { asFragment } = render(
|
||||
<FontScalingPanel />,
|
||||
);
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -15,8 +15,7 @@ limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
// eslint-disable-next-line deprecate/import
|
||||
import { mount } from "enzyme";
|
||||
import { render } from '@testing-library/react';
|
||||
|
||||
import * as TestUtils from "../../../test-utils";
|
||||
import ThemeChoicePanel from '../../../../src/components/views/settings/ThemeChoicePanel';
|
||||
@@ -34,9 +33,9 @@ jest.mock(
|
||||
describe('ThemeChoicePanel', () => {
|
||||
it('renders the theme choice UI', () => {
|
||||
TestUtils.stubClient();
|
||||
const wrapper = mount(
|
||||
const { asFragment } = render(
|
||||
<ThemeChoicePanel />,
|
||||
);
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -15,8 +15,7 @@ limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
// eslint-disable-next-line deprecate/import
|
||||
import { mount } from 'enzyme';
|
||||
import { render } from '@testing-library/react';
|
||||
|
||||
import SettingsStore from '../../../../src/settings/SettingsStore';
|
||||
import UiFeatureSettingWrapper from '../../../../src/components/views/settings/UiFeatureSettingWrapper';
|
||||
@@ -29,29 +28,29 @@ describe('<UiFeatureSettingWrapper>', () => {
|
||||
uiFeature: UIFeature.Feedback,
|
||||
children: <div>test</div>,
|
||||
};
|
||||
const getComponent = (props = {}) => mount(<UiFeatureSettingWrapper {...defaultProps} {...props} />);
|
||||
const getComponent = (props = {}) => render(<UiFeatureSettingWrapper {...defaultProps} {...props} />);
|
||||
|
||||
beforeEach(() => {
|
||||
(SettingsStore.getValue as jest.Mock).mockClear().mockReturnValue(true);
|
||||
});
|
||||
|
||||
it('renders children when setting is truthy', () => {
|
||||
const component = getComponent();
|
||||
const { asFragment } = getComponent();
|
||||
|
||||
expect(component).toMatchSnapshot();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
expect(SettingsStore.getValue).toHaveBeenCalledWith(defaultProps.uiFeature);
|
||||
});
|
||||
|
||||
it('returns null when setting is truthy but children are undefined', () => {
|
||||
const component = getComponent({ children: undefined });
|
||||
const { asFragment } = getComponent({ children: undefined });
|
||||
|
||||
expect(component.html()).toBeNull();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('returns null when setting is falsy', () => {
|
||||
(SettingsStore.getValue as jest.Mock).mockReturnValue(false);
|
||||
const component = getComponent();
|
||||
const { asFragment } = getComponent();
|
||||
|
||||
expect(component.html()).toBeNull();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,313 +1,186 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`FontScalingPanel renders the font scaling UI 1`] = `
|
||||
<FontScalingPanel>
|
||||
<DocumentFragment>
|
||||
<div
|
||||
className="mx_SettingsTab_section mx_FontScalingPanel"
|
||||
class="mx_SettingsTab_section mx_FontScalingPanel"
|
||||
>
|
||||
<span
|
||||
className="mx_SettingsTab_subheading"
|
||||
class="mx_SettingsTab_subheading"
|
||||
>
|
||||
Font size
|
||||
</span>
|
||||
<EventTilePreview
|
||||
avatarUrl={null}
|
||||
className="mx_FontScalingPanel_preview"
|
||||
displayName={null}
|
||||
layout="group"
|
||||
message="Hey you. You're the best!"
|
||||
userId={null}
|
||||
>
|
||||
<div
|
||||
className="mx_FontScalingPanel_preview mx_EventTilePreview_loader"
|
||||
>
|
||||
<Spinner
|
||||
h={32}
|
||||
w={32}
|
||||
>
|
||||
<div
|
||||
className="mx_Spinner"
|
||||
>
|
||||
<div
|
||||
aria-label="Loading..."
|
||||
className="mx_Spinner_icon"
|
||||
data-testid="spinner"
|
||||
role="progressbar"
|
||||
style={
|
||||
{
|
||||
"height": 32,
|
||||
"width": 32,
|
||||
}
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</Spinner>
|
||||
</div>
|
||||
</EventTilePreview>
|
||||
<div
|
||||
className="mx_FontScalingPanel_fontSlider"
|
||||
class="mx_FontScalingPanel_preview mx_EventTilePreview_loader"
|
||||
>
|
||||
<div
|
||||
className="mx_FontScalingPanel_fontSlider_smallText"
|
||||
class="mx_Spinner"
|
||||
>
|
||||
<div
|
||||
aria-label="Loading..."
|
||||
class="mx_Spinner_icon"
|
||||
data-testid="spinner"
|
||||
role="progressbar"
|
||||
style="width: 32px; height: 32px;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mx_FontScalingPanel_fontSlider"
|
||||
>
|
||||
<div
|
||||
class="mx_FontScalingPanel_fontSlider_smallText"
|
||||
>
|
||||
Aa
|
||||
</div>
|
||||
<Slider
|
||||
disabled={false}
|
||||
displayFunc={[Function]}
|
||||
onSelectionChange={[Function]}
|
||||
value={15}
|
||||
values={
|
||||
[
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
18,
|
||||
]
|
||||
}
|
||||
<div
|
||||
class="mx_Slider"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider"
|
||||
>
|
||||
<div>
|
||||
<div>
|
||||
<div
|
||||
class="mx_Slider_bar"
|
||||
>
|
||||
<hr />
|
||||
<div
|
||||
className="mx_Slider_bar"
|
||||
class="mx_Slider_selection"
|
||||
>
|
||||
<hr
|
||||
onClick={[Function]}
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_selection"
|
||||
class="mx_Slider_selectionDot"
|
||||
style="left: calc(-1.195em + 50%);"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_selectionDot"
|
||||
style={
|
||||
{
|
||||
"left": "calc(-1.195em + 50%)",
|
||||
}
|
||||
}
|
||||
class="mx_Slider_selectionText"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_selectionText"
|
||||
>
|
||||
15
|
||||
</div>
|
||||
15
|
||||
</div>
|
||||
<hr
|
||||
style={
|
||||
{
|
||||
"width": "50%",
|
||||
}
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="mx_Slider_dotContainer"
|
||||
>
|
||||
<Dot
|
||||
active={true}
|
||||
disabled={false}
|
||||
key="13"
|
||||
label=""
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
className="mx_Slider_dotValue"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</Dot>
|
||||
<Dot
|
||||
active={true}
|
||||
disabled={false}
|
||||
key="14"
|
||||
label=""
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
className="mx_Slider_dotValue"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</Dot>
|
||||
<Dot
|
||||
active={true}
|
||||
disabled={false}
|
||||
key="15"
|
||||
label=""
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
className="mx_Slider_dotValue"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</Dot>
|
||||
<Dot
|
||||
active={false}
|
||||
disabled={false}
|
||||
key="16"
|
||||
label=""
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
className="mx_Slider_dotValue"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_dot"
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</Dot>
|
||||
<Dot
|
||||
active={false}
|
||||
disabled={false}
|
||||
key="18"
|
||||
label=""
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
className="mx_Slider_dotValue"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_dot"
|
||||
/>
|
||||
<div
|
||||
className="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
className="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</Dot>
|
||||
<hr
|
||||
style="width: 50%;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mx_Slider_dotContainer"
|
||||
>
|
||||
<span
|
||||
class="mx_Slider_dotValue"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
class="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
<span
|
||||
class="mx_Slider_dotValue"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
class="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
<span
|
||||
class="mx_Slider_dotValue"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_dot mx_Slider_dotActive"
|
||||
/>
|
||||
<div
|
||||
class="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
<span
|
||||
class="mx_Slider_dotValue"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_dot"
|
||||
/>
|
||||
<div
|
||||
class="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
<span
|
||||
class="mx_Slider_dotValue"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_dot"
|
||||
/>
|
||||
<div
|
||||
class="mx_Slider_labelContainer"
|
||||
>
|
||||
<div
|
||||
class="mx_Slider_label"
|
||||
/>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Slider>
|
||||
</div>
|
||||
<div
|
||||
className="mx_FontScalingPanel_fontSlider_largeText"
|
||||
class="mx_FontScalingPanel_fontSlider_largeText"
|
||||
>
|
||||
Aa
|
||||
</div>
|
||||
</div>
|
||||
<SettingsFlag
|
||||
level="account"
|
||||
name="useCustomFontSize"
|
||||
onChange={[Function]}
|
||||
useCheckbox={true}
|
||||
<span
|
||||
class="mx_Checkbox mx_Checkbox_hasKind mx_Checkbox_kind_solid"
|
||||
>
|
||||
<StyledCheckbox
|
||||
checked={false}
|
||||
className=""
|
||||
disabled={false}
|
||||
onChange={[Function]}
|
||||
<input
|
||||
id="checkbox_abdefghi"
|
||||
type="checkbox"
|
||||
/>
|
||||
<label
|
||||
for="checkbox_abdefghi"
|
||||
>
|
||||
<span
|
||||
className="mx_Checkbox mx_Checkbox_hasKind mx_Checkbox_kind_solid"
|
||||
<div
|
||||
class="mx_Checkbox_background"
|
||||
>
|
||||
<input
|
||||
checked={false}
|
||||
disabled={false}
|
||||
id="checkbox_abdefghi"
|
||||
onChange={[Function]}
|
||||
type="checkbox"
|
||||
<div
|
||||
class="mx_Checkbox_checkmark"
|
||||
/>
|
||||
<label
|
||||
htmlFor="checkbox_abdefghi"
|
||||
>
|
||||
<div
|
||||
className="mx_Checkbox_background"
|
||||
>
|
||||
<div
|
||||
className="mx_Checkbox_checkmark"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
Use custom size
|
||||
</div>
|
||||
</label>
|
||||
</span>
|
||||
</StyledCheckbox>
|
||||
</SettingsFlag>
|
||||
<Field
|
||||
autoComplete="off"
|
||||
className="mx_FontScalingPanel_customFontSizeField"
|
||||
disabled={true}
|
||||
element="input"
|
||||
id="font_size_field"
|
||||
label="Font size"
|
||||
onChange={[Function]}
|
||||
onValidate={[Function]}
|
||||
placeholder="15"
|
||||
type="number"
|
||||
validateOnBlur={true}
|
||||
validateOnChange={true}
|
||||
validateOnFocus={true}
|
||||
value="15"
|
||||
</div>
|
||||
<div>
|
||||
Use custom size
|
||||
</div>
|
||||
</label>
|
||||
</span>
|
||||
<div
|
||||
class="mx_Field mx_Field_input mx_FontScalingPanel_customFontSizeField"
|
||||
>
|
||||
<div
|
||||
className="mx_Field mx_Field_input mx_FontScalingPanel_customFontSizeField"
|
||||
<input
|
||||
autocomplete="off"
|
||||
disabled=""
|
||||
id="font_size_field"
|
||||
label="Font size"
|
||||
placeholder="15"
|
||||
type="number"
|
||||
value="15"
|
||||
/>
|
||||
<label
|
||||
for="font_size_field"
|
||||
>
|
||||
<input
|
||||
autoComplete="off"
|
||||
disabled={true}
|
||||
id="font_size_field"
|
||||
label="Font size"
|
||||
onBlur={[Function]}
|
||||
onChange={[Function]}
|
||||
onFocus={[Function]}
|
||||
placeholder="15"
|
||||
type="number"
|
||||
value="15"
|
||||
/>
|
||||
<label
|
||||
htmlFor="font_size_field"
|
||||
>
|
||||
Font size
|
||||
</label>
|
||||
</div>
|
||||
</Field>
|
||||
Font size
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</FontScalingPanel>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
@@ -1,113 +1,63 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`ThemeChoicePanel renders the theme choice UI 1`] = `
|
||||
<ThemeChoicePanel>
|
||||
<DocumentFragment>
|
||||
<div
|
||||
className="mx_SettingsTab_section mx_ThemeChoicePanel"
|
||||
class="mx_SettingsTab_section mx_ThemeChoicePanel"
|
||||
>
|
||||
<span
|
||||
className="mx_SettingsTab_subheading"
|
||||
class="mx_SettingsTab_subheading"
|
||||
>
|
||||
Theme
|
||||
</span>
|
||||
<div
|
||||
className="mx_ThemeSelectors"
|
||||
class="mx_ThemeSelectors"
|
||||
>
|
||||
<StyledRadioGroup
|
||||
definitions={
|
||||
[
|
||||
{
|
||||
"className": "mx_ThemeSelector_light",
|
||||
"disabled": true,
|
||||
"label": "Light",
|
||||
"value": "light",
|
||||
},
|
||||
{
|
||||
"className": "mx_ThemeSelector_dark",
|
||||
"disabled": true,
|
||||
"label": "Dark",
|
||||
"value": "dark",
|
||||
},
|
||||
]
|
||||
}
|
||||
name="theme"
|
||||
onChange={[Function]}
|
||||
outlined={true}
|
||||
<label
|
||||
class="mx_StyledRadioButton mx_ThemeSelector_light mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
|
||||
>
|
||||
<StyledRadioButton
|
||||
checked={false}
|
||||
childrenInLabel={true}
|
||||
className="mx_ThemeSelector_light"
|
||||
disabled={true}
|
||||
<input
|
||||
disabled=""
|
||||
id="theme-light"
|
||||
name="theme"
|
||||
onChange={[Function]}
|
||||
outlined={true}
|
||||
type="radio"
|
||||
value="light"
|
||||
/>
|
||||
<div>
|
||||
<div />
|
||||
</div>
|
||||
<div
|
||||
class="mx_StyledRadioButton_content"
|
||||
>
|
||||
<label
|
||||
className="mx_StyledRadioButton mx_ThemeSelector_light mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
|
||||
>
|
||||
<input
|
||||
checked={false}
|
||||
disabled={true}
|
||||
id="theme-light"
|
||||
name="theme"
|
||||
onChange={[Function]}
|
||||
type="radio"
|
||||
value="light"
|
||||
/>
|
||||
<div>
|
||||
<div />
|
||||
</div>
|
||||
<div
|
||||
className="mx_StyledRadioButton_content"
|
||||
>
|
||||
Light
|
||||
</div>
|
||||
<div
|
||||
className="mx_StyledRadioButton_spacer"
|
||||
/>
|
||||
</label>
|
||||
</StyledRadioButton>
|
||||
<StyledRadioButton
|
||||
checked={false}
|
||||
childrenInLabel={true}
|
||||
className="mx_ThemeSelector_dark"
|
||||
disabled={true}
|
||||
Light
|
||||
</div>
|
||||
<div
|
||||
class="mx_StyledRadioButton_spacer"
|
||||
/>
|
||||
</label>
|
||||
<label
|
||||
class="mx_StyledRadioButton mx_ThemeSelector_dark mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
|
||||
>
|
||||
<input
|
||||
disabled=""
|
||||
id="theme-dark"
|
||||
name="theme"
|
||||
onChange={[Function]}
|
||||
outlined={true}
|
||||
type="radio"
|
||||
value="dark"
|
||||
/>
|
||||
<div>
|
||||
<div />
|
||||
</div>
|
||||
<div
|
||||
class="mx_StyledRadioButton_content"
|
||||
>
|
||||
<label
|
||||
className="mx_StyledRadioButton mx_ThemeSelector_dark mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
|
||||
>
|
||||
<input
|
||||
checked={false}
|
||||
disabled={true}
|
||||
id="theme-dark"
|
||||
name="theme"
|
||||
onChange={[Function]}
|
||||
type="radio"
|
||||
value="dark"
|
||||
/>
|
||||
<div>
|
||||
<div />
|
||||
</div>
|
||||
<div
|
||||
className="mx_StyledRadioButton_content"
|
||||
>
|
||||
Dark
|
||||
</div>
|
||||
<div
|
||||
className="mx_StyledRadioButton_spacer"
|
||||
/>
|
||||
</label>
|
||||
</StyledRadioButton>
|
||||
</StyledRadioGroup>
|
||||
Dark
|
||||
</div>
|
||||
<div
|
||||
class="mx_StyledRadioButton_spacer"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</ThemeChoicePanel>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`<UiFeatureSettingWrapper> renders children when setting is truthy 1`] = `
|
||||
<UiFeatureSettingWrapper
|
||||
uiFeature="UIFeature.feedback"
|
||||
>
|
||||
<DocumentFragment>
|
||||
<div>
|
||||
test
|
||||
</div>
|
||||
</UiFeatureSettingWrapper>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
exports[`<UiFeatureSettingWrapper> returns null when setting is falsy 1`] = `<DocumentFragment />`;
|
||||
|
||||
exports[`<UiFeatureSettingWrapper> returns null when setting is truthy but children are undefined 1`] = `<DocumentFragment />`;
|
||||
|
||||
Reference in New Issue
Block a user