Unit test tsc fixes part 15 (#8104)

* fix ts issues in MPollBody test

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix ts issues in PollCreateDialog

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix settings components

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix DateSeparator

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix loosies

Signed-off-by: Kerry Archibald <kerrya@element.io>

* update tsconfig

Signed-off-by: Kerry Archibald <kerrya@element.io>
This commit is contained in:
Kerry 2022-03-22 11:32:35 +01:00 committed by GitHub
parent 2bf1d2b287
commit abc225d3c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 2663 additions and 3038 deletions

View file

@ -19,9 +19,7 @@ import { mount } from "enzyme";
import '../../../skinned-sdk';
import * as TestUtils from "../../../test-utils";
import _FontScalingPanel from '../../../../src/components/views/settings/FontScalingPanel';
const FontScalingPanel = TestUtils.wrapInMatrixClientContext(_FontScalingPanel);
import FontScalingPanel from '../../../../src/components/views/settings/FontScalingPanel';
// Fake random strings to give a predictable snapshot
jest.mock(

View file

@ -19,7 +19,7 @@ import React from "react";
import { mount, ReactWrapper } from "enzyme";
import { Key } from "../../../../src/Keyboard";
import PlatformPeg from "../../../../src/PlatformPeg";
import { mockPlatformPeg, unmockPlatformPeg } from "../../../test-utils/platform";
const PATH_TO_COMPONENT = "../../../../src/components/views/settings/KeyboardShortcut.tsx";
@ -31,6 +31,7 @@ const renderKeyboardShortcut = async (component, props?): Promise<ReactWrapper>
describe("KeyboardShortcut", () => {
beforeEach(() => {
jest.resetModules();
unmockPlatformPeg();
});
it("renders key icon", async () => {
@ -49,7 +50,7 @@ describe("KeyboardShortcut", () => {
});
it("doesn't render same modifier twice", async () => {
PlatformPeg.get = () => ({ overrideBrowserShortcuts: () => false });
mockPlatformPeg({ overrideBrowserShortcuts: jest.fn().mockReturnValue(false) });
const body1 = await renderKeyboardShortcut("KeyboardShortcut", {
value: {
key: Key.A,

View file

@ -15,14 +15,14 @@ limitations under the License.
import React from 'react';
import { mount } from 'enzyme';
import '../../../skinned-sdk';
import { IPushRule, IPushRules, RuleId } from 'matrix-js-sdk/src/matrix';
import { ThreepidMedium } from 'matrix-js-sdk/src/@types/threepids';
import { IPushRule, IPushRules, RuleId, IPusher } from 'matrix-js-sdk/src/matrix';
import { IThreepid, ThreepidMedium } from 'matrix-js-sdk/src/@types/threepids';
import { act } from 'react-dom/test-utils';
import Notifications from '../../../../src/components/views/settings/Notifications';
import SettingsStore from "../../../../src/settings/SettingsStore";
import { MatrixClientPeg } from '../../../../src/MatrixClientPeg';
import { StandardActions } from '../../../../src/notifications/StandardActions';
import { getMockClientWithEventEmitter } from '../../../test-utils';
jest.mock('../../../../src/settings/SettingsStore', () => ({
monitorSetting: jest.fn(),
@ -64,7 +64,7 @@ describe('<Notifications />', () => {
return component;
};
const mockClient = {
const mockClient = getMockClientWithEventEmitter({
getPushRules: jest.fn(),
getPushers: jest.fn(),
getThreePids: jest.fn(),
@ -72,15 +72,11 @@ describe('<Notifications />', () => {
setPushRuleEnabled: jest.fn(),
setPushRuleActions: jest.fn(),
getRooms: jest.fn().mockReturnValue([]),
};
});
mockClient.getPushRules.mockResolvedValue(pushRules);
const findByTestId = (component, id) => component.find(`[data-test-id="${id}"]`);
beforeAll(() => {
MatrixClientPeg.get = () => mockClient;
});
beforeEach(() => {
mockClient.getPushRules.mockClear().mockResolvedValue(pushRules);
mockClient.getPushers.mockClear().mockResolvedValue({ pushers: [] });
@ -124,7 +120,7 @@ describe('<Notifications />', () => {
...pushRules.global,
override: [{ ...masterRule, enabled: true }],
},
};
} as unknown as IPushRules;
mockClient.getPushRules.mockClear().mockResolvedValue(disableNotificationsPushRules);
const component = await getComponentAndWait();
@ -148,7 +144,7 @@ describe('<Notifications />', () => {
{
medium: ThreepidMedium.Email,
address: testEmail,
},
} as unknown as IThreepid,
],
});
});
@ -160,7 +156,11 @@ describe('<Notifications />', () => {
});
it('renders email switches correctly when notifications are on for email', async () => {
mockClient.getPushers.mockResolvedValue({ pushers: [{ kind: 'email', pushkey: testEmail }] });
mockClient.getPushers.mockResolvedValue({
pushers: [
{ kind: 'email', pushkey: testEmail } as unknown as IPusher,
],
});
const component = await getComponentAndWait();
expect(findByTestId(component, 'notif-email-switch').props().value).toEqual(true);
@ -205,7 +205,7 @@ describe('<Notifications />', () => {
});
it('enables email notification when toggling off', async () => {
const testPusher = { kind: 'email', pushkey: 'tester@test.com' };
const testPusher = { kind: 'email', pushkey: 'tester@test.com' } as unknown as IPusher;
mockClient.getPushers.mockResolvedValue({ pushers: [testPusher] });
const component = await getComponentAndWait();

View file

@ -19,9 +19,7 @@ import { mount } from "enzyme";
import '../../../skinned-sdk';
import * as TestUtils from "../../../test-utils";
import _ThemeChoicePanel from '../../../../src/components/views/settings/ThemeChoicePanel';
const ThemeChoicePanel = TestUtils.wrapInMatrixClientContext(_ThemeChoicePanel);
import ThemeChoicePanel from '../../../../src/components/views/settings/ThemeChoicePanel';
// Fake random strings to give a predictable snapshot
jest.mock(

View file

@ -1,313 +1,311 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`FontScalingPanel renders the font scaling UI 1`] = `
<Wrapper>
<FontScalingPanel>
<div
className="mx_SettingsTab_section mx_FontScalingPanel"
<FontScalingPanel>
<div
className="mx_SettingsTab_section mx_FontScalingPanel"
>
<span
className="mx_SettingsTab_subheading"
>
Font size
</span>
<EventTilePreview
avatarUrl={null}
className="mx_FontScalingPanel_fontSlider_preview"
displayName={null}
layout="group"
message="Hey you. You're the best!"
userId={null}
>
<span
className="mx_SettingsTab_subheading"
>
Font size
</span>
<EventTilePreview
avatarUrl={null}
className="mx_FontScalingPanel_fontSlider_preview"
displayName={null}
layout="group"
message="Hey you. You're the best!"
userId={null}
>
<div
className="mx_FontScalingPanel_fontSlider_preview mx_GroupLayout mx_EventTilePreview_loader"
>
<Spinner
h={32}
w={32}
>
<div
className="mx_Spinner"
>
<div
aria-label="Loading..."
className="mx_Spinner_icon"
style={
Object {
"height": 32,
"width": 32,
}
}
/>
</div>
</Spinner>
</div>
</EventTilePreview>
<div
className="mx_FontScalingPanel_fontSlider"
className="mx_FontScalingPanel_fontSlider_preview mx_GroupLayout mx_EventTilePreview_loader"
>
<div
className="mx_FontScalingPanel_fontSlider_smallText"
>
Aa
</div>
<Slider
disabled={false}
displayFunc={[Function]}
onSelectionChange={[Function]}
value={15}
values={
Array [
13,
14,
15,
16,
18,
]
}
<Spinner
h={32}
w={32}
>
<div
className="mx_Slider"
className="mx_Spinner"
>
<div>
<div
aria-label="Loading..."
className="mx_Spinner_icon"
style={
Object {
"height": 32,
"width": 32,
}
}
/>
</div>
</Spinner>
</div>
</EventTilePreview>
<div
className="mx_FontScalingPanel_fontSlider"
>
<div
className="mx_FontScalingPanel_fontSlider_smallText"
>
Aa
</div>
<Slider
disabled={false}
displayFunc={[Function]}
onSelectionChange={[Function]}
value={15}
values={
Array [
13,
14,
15,
16,
18,
]
}
>
<div
className="mx_Slider"
>
<div>
<div
className="mx_Slider_bar"
>
<hr
onClick={[Function]}
/>
<div
className="mx_Slider_bar"
className="mx_Slider_selection"
>
<hr
onClick={[Function]}
/>
<div
className="mx_Slider_selection"
className="mx_Slider_selectionDot"
style={
Object {
"left": "calc(-1.195em + 50%)",
}
}
>
<div
className="mx_Slider_selectionDot"
style={
Object {
"left": "calc(-1.195em + 50%)",
}
}
className="mx_Slider_selectionText"
>
<div
className="mx_Slider_selectionText"
>
15
</div>
15
</div>
<hr
style={
Object {
"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>
</div>
</div>
</div>
</Slider>
<div
className="mx_FontScalingPanel_fontSlider_largeText"
>
Aa
</div>
</div>
<SettingsFlag
level="account"
name="useCustomFontSize"
onChange={[Function]}
useCheckbox={true}
>
<StyledCheckbox
checked={false}
className=""
disabled={false}
onChange={[Function]}
>
<span
className="mx_Checkbox mx_Checkbox_hasKind mx_Checkbox_kind_solid"
>
<input
checked={false}
disabled={false}
id="checkbox_abdefghi"
onChange={[Function]}
type="checkbox"
/>
<label
htmlFor="checkbox_abdefghi"
>
<div
className="mx_Checkbox_background"
>
<div
className="mx_Checkbox_checkmark"
<hr
style={
Object {
"width": "50%",
}
}
/>
</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
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>
</div>
</div>
</div>
</Slider>
<div
className="mx_FontScalingPanel_fontSlider_largeText"
>
<div
className="mx_Field mx_Field_input mx_FontScalingPanel_customFontSizeField"
Aa
</div>
</div>
<SettingsFlag
level="account"
name="useCustomFontSize"
onChange={[Function]}
useCheckbox={true}
>
<StyledCheckbox
checked={false}
className=""
disabled={false}
onChange={[Function]}
>
<span
className="mx_Checkbox mx_Checkbox_hasKind mx_Checkbox_kind_solid"
>
<input
autoComplete="off"
disabled={true}
id="font_size_field"
label="Font size"
onBlur={[Function]}
checked={false}
disabled={false}
id="checkbox_abdefghi"
onChange={[Function]}
onFocus={[Function]}
placeholder="15"
type="number"
value="15"
type="checkbox"
/>
<label
htmlFor="font_size_field"
htmlFor="checkbox_abdefghi"
>
Font size
<div
className="mx_Checkbox_background"
>
<div
className="mx_Checkbox_checkmark"
/>
</div>
<div>
Use custom size
</div>
</label>
</div>
</Field>
</div>
</FontScalingPanel>
</Wrapper>
</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
className="mx_Field mx_Field_input mx_FontScalingPanel_customFontSizeField"
>
<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>
</div>
</FontScalingPanel>
`;

View file

@ -1,115 +1,113 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ThemeChoicePanel renders the theme choice UI 1`] = `
<Wrapper>
<ThemeChoicePanel>
<div
className="mx_SettingsTab_section mx_ThemeChoicePanel"
<ThemeChoicePanel>
<div
className="mx_SettingsTab_section mx_ThemeChoicePanel"
>
<span
className="mx_SettingsTab_subheading"
>
<span
className="mx_SettingsTab_subheading"
Theme
</span>
<div
className="mx_ThemeSelectors"
>
<StyledRadioGroup
definitions={
Array [
Object {
"className": "mx_ThemeSelector_light",
"disabled": true,
"label": "Light",
"value": "light",
},
Object {
"className": "mx_ThemeSelector_dark",
"disabled": true,
"label": "Dark",
"value": "dark",
},
]
}
name="theme"
onChange={[Function]}
outlined={true}
>
Theme
</span>
<div
className="mx_ThemeSelectors"
>
<StyledRadioGroup
definitions={
Array [
Object {
"className": "mx_ThemeSelector_light",
"disabled": true,
"label": "Light",
"value": "light",
},
Object {
"className": "mx_ThemeSelector_dark",
"disabled": true,
"label": "Dark",
"value": "dark",
},
]
}
<StyledRadioButton
checked={false}
childrenInLabel={true}
className="mx_ThemeSelector_light"
disabled={true}
id="theme-light"
name="theme"
onChange={[Function]}
outlined={true}
value="light"
>
<StyledRadioButton
checked={false}
childrenInLabel={true}
className="mx_ThemeSelector_light"
disabled={true}
id="theme-light"
name="theme"
onChange={[Function]}
outlined={true}
value="light"
<label
className="mx_StyledRadioButton mx_ThemeSelector_light mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
>
<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"
>
<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}
id="theme-dark"
name="theme"
onChange={[Function]}
outlined={true}
value="dark"
Light
</div>
<div
className="mx_StyledRadioButton_spacer"
/>
</label>
</StyledRadioButton>
<StyledRadioButton
checked={false}
childrenInLabel={true}
className="mx_ThemeSelector_dark"
disabled={true}
id="theme-dark"
name="theme"
onChange={[Function]}
outlined={true}
value="dark"
>
<label
className="mx_StyledRadioButton mx_ThemeSelector_dark mx_StyledRadioButton_disabled mx_StyledRadioButton_outlined"
>
<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"
>
<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>
</div>
Dark
</div>
<div
className="mx_StyledRadioButton_spacer"
/>
</label>
</StyledRadioButton>
</StyledRadioGroup>
</div>
</ThemeChoicePanel>
</Wrapper>
</div>
</ThemeChoicePanel>
`;