Implement push notification toggle in device detail (#9308)
Co-authored-by: Travis Ralston <travisr@matrix.org>
This commit is contained in:
parent
ace6591f43
commit
641cf28e4c
13 changed files with 269 additions and 3 deletions
|
@ -22,13 +22,14 @@ import { logger } from 'matrix-js-sdk/src/logger';
|
|||
import { DeviceTrustLevel } from 'matrix-js-sdk/src/crypto/CrossSigning';
|
||||
import { VerificationRequest } from 'matrix-js-sdk/src/crypto/verification/request/VerificationRequest';
|
||||
import { sleep } from 'matrix-js-sdk/src/utils';
|
||||
import { IMyDevice } from 'matrix-js-sdk/src/matrix';
|
||||
import { IMyDevice, PUSHER_DEVICE_ID, PUSHER_ENABLED } from 'matrix-js-sdk/src/matrix';
|
||||
|
||||
import SessionManagerTab from '../../../../../../src/components/views/settings/tabs/user/SessionManagerTab';
|
||||
import MatrixClientContext from '../../../../../../src/contexts/MatrixClientContext';
|
||||
import {
|
||||
flushPromisesWithFakeTimers,
|
||||
getMockClientWithEventEmitter,
|
||||
mkPusher,
|
||||
mockClientMethodsUser,
|
||||
} from '../../../../../test-utils';
|
||||
import Modal from '../../../../../../src/Modal';
|
||||
|
@ -67,6 +68,9 @@ describe('<SessionManagerTab />', () => {
|
|||
deleteMultipleDevices: jest.fn(),
|
||||
generateClientSecret: jest.fn(),
|
||||
setDeviceDetails: jest.fn(),
|
||||
doesServerSupportUnstableFeature: jest.fn().mockResolvedValue(true),
|
||||
getPushers: jest.fn(),
|
||||
setPusher: jest.fn(),
|
||||
});
|
||||
|
||||
const defaultProps = {};
|
||||
|
@ -101,6 +105,15 @@ describe('<SessionManagerTab />', () => {
|
|||
mockClient.getDevices
|
||||
.mockReset()
|
||||
.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice] });
|
||||
|
||||
mockClient.getPushers
|
||||
.mockReset()
|
||||
.mockResolvedValue({
|
||||
pushers: [mkPusher({
|
||||
[PUSHER_DEVICE_ID.name]: alicesMobileDevice.device_id,
|
||||
[PUSHER_ENABLED.name]: true,
|
||||
})],
|
||||
});
|
||||
});
|
||||
|
||||
it('renders spinner while devices load', () => {
|
||||
|
@ -668,4 +681,25 @@ describe('<SessionManagerTab />', () => {
|
|||
expect(getByTestId('device-rename-error')).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
it("lets you change the pusher state", async () => {
|
||||
const { getByTestId } = render(getComponent());
|
||||
|
||||
await act(async () => {
|
||||
await flushPromisesWithFakeTimers();
|
||||
});
|
||||
|
||||
toggleDeviceDetails(getByTestId, alicesMobileDevice.device_id);
|
||||
|
||||
// device details are expanded
|
||||
expect(getByTestId(`device-detail-${alicesMobileDevice.device_id}`)).toBeTruthy();
|
||||
expect(getByTestId('device-detail-push-notification')).toBeTruthy();
|
||||
|
||||
const checkbox = getByTestId('device-detail-push-notification-checkbox');
|
||||
|
||||
expect(checkbox).toBeTruthy();
|
||||
fireEvent.click(checkbox);
|
||||
|
||||
expect(mockClient.setPusher).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue