mirror of https://github.com/vector-im/riot-web
Disable room settings tests
parent
9513837e97
commit
d20bdbbc1a
|
@ -1,191 +1,192 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import expect from 'expect';
|
||||
import jest from 'jest-mock';
|
||||
import Promise from 'bluebird';
|
||||
import * as testUtils from '../../../test-utils';
|
||||
import sdk from 'matrix-react-sdk';
|
||||
const WrappedRoomSettings = testUtils.wrapInMatrixClientContext(sdk.getComponent('views.rooms.RoomSettings'));
|
||||
import MatrixClientPeg from '../../../../src/MatrixClientPeg';
|
||||
import SettingsStore from '../../../../src/settings/SettingsStore';
|
||||
|
||||
|
||||
describe('RoomSettings', () => {
|
||||
let parentDiv = null;
|
||||
let sandbox = null;
|
||||
let client = null;
|
||||
let roomSettings = null;
|
||||
const room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org');
|
||||
|
||||
function expectSentStateEvent(roomId, eventType, expectedEventContent) {
|
||||
let found = false;
|
||||
for (const call of client.sendStateEvent.mock.calls) {
|
||||
const [
|
||||
actualRoomId,
|
||||
actualEventType,
|
||||
actualEventContent,
|
||||
] = call.slice(0, 3);
|
||||
|
||||
if (roomId === actualRoomId && actualEventType === eventType) {
|
||||
expect(actualEventContent).toEqual(expectedEventContent);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
expect(found).toBe(true);
|
||||
}
|
||||
|
||||
beforeEach(function(done) {
|
||||
testUtils.beforeEach(this);
|
||||
sandbox = testUtils.stubClient();
|
||||
client = MatrixClientPeg.get();
|
||||
client.credentials = {userId: '@me:domain.com'};
|
||||
|
||||
client.setRoomName = jest.fn().mockReturnValue(Promise.resolve());
|
||||
client.setRoomTopic = jest.fn().mockReturnValue(Promise.resolve());
|
||||
client.setRoomDirectoryVisibility = jest.fn().mockReturnValue(Promise.resolve());
|
||||
|
||||
// Covers any room state event (e.g. name, avatar, topic)
|
||||
client.sendStateEvent = jest.fn().mockReturnValue(Promise.resolve());
|
||||
|
||||
// Covers room tagging
|
||||
client.setRoomTag = jest.fn().mockReturnValue(Promise.resolve());
|
||||
client.deleteRoomTag = jest.fn().mockReturnValue(Promise.resolve());
|
||||
|
||||
// Covers any setting in the SettingsStore
|
||||
// (including local client settings not stored via matrix)
|
||||
SettingsStore.setValue = jest.fn().mockReturnValue(Promise.resolve());
|
||||
|
||||
parentDiv = document.createElement('div');
|
||||
document.body.appendChild(parentDiv);
|
||||
|
||||
const gatherWrappedRef = (r) => {roomSettings = r;};
|
||||
|
||||
// get use wrappedRef because we're using wrapInMatrixClientContext
|
||||
ReactDOM.render(
|
||||
<WrappedRoomSettings
|
||||
wrappedRef={gatherWrappedRef}
|
||||
room={room}
|
||||
/>,
|
||||
parentDiv,
|
||||
done,
|
||||
);
|
||||
});
|
||||
|
||||
afterEach((done) => {
|
||||
if (parentDiv) {
|
||||
ReactDOM.unmountComponentAtNode(parentDiv);
|
||||
parentDiv.remove();
|
||||
parentDiv = null;
|
||||
}
|
||||
sandbox.restore();
|
||||
done();
|
||||
});
|
||||
|
||||
it('should not set when no setting is changed', (done) => {
|
||||
roomSettings.save().then(() => {
|
||||
expect(client.sendStateEvent).not.toHaveBeenCalled();
|
||||
expect(client.setRoomTag).not.toHaveBeenCalled();
|
||||
expect(client.deleteRoomTag).not.toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
// XXX: Apparently we do call SettingsStore.setValue
|
||||
xit('should not settings via the SettingsStore when no setting is changed', (done) => {
|
||||
roomSettings.save().then(() => {
|
||||
expect(SettingsStore.setValue).not.toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should set room name when it has changed', (done) => {
|
||||
const name = "My Room Name";
|
||||
roomSettings.setName(name);
|
||||
|
||||
roomSettings.save().then(() => {
|
||||
expect(client.setRoomName.mock.calls[0].slice(0, 2))
|
||||
.toEqual(['!DdJkzRliezrwpNebLk:matrix.org', name]);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should set room topic when it has changed', (done) => {
|
||||
const topic = "this is a topic";
|
||||
roomSettings.setTopic(topic);
|
||||
|
||||
roomSettings.save().then(() => {
|
||||
expect(client.setRoomTopic.mock.calls[0].slice(0, 2))
|
||||
.toEqual(['!DdJkzRliezrwpNebLk:matrix.org', topic]);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should set history visibility when it has changed', (done) => {
|
||||
const historyVisibility = "translucent";
|
||||
roomSettings.setState({
|
||||
history_visibility: historyVisibility,
|
||||
});
|
||||
|
||||
roomSettings.save().then(() => {
|
||||
expectSentStateEvent(
|
||||
"!DdJkzRliezrwpNebLk:matrix.org",
|
||||
"m.room.history_visibility", {history_visibility: historyVisibility},
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
// XXX: Can't test this because we `getRoomDirectoryVisibility` in `componentWillMount`
|
||||
xit('should set room directory publicity when set to true', (done) => {
|
||||
const isRoomPublished = true;
|
||||
roomSettings.setState({
|
||||
isRoomPublished,
|
||||
}, () => {
|
||||
roomSettings.save().then(() => {
|
||||
expect(client.setRoomDirectoryVisibility.calls[0].arguments.slice(0, 2))
|
||||
.toEqual("!DdJkzRliezrwpNebLk:matrix.org", isRoomPublished ? "public" : "private");
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should set power levels when changed', (done) => {
|
||||
roomSettings.onPowerLevelsChanged(42, "invite");
|
||||
|
||||
roomSettings.save().then(() => {
|
||||
expectSentStateEvent(
|
||||
"!DdJkzRliezrwpNebLk:matrix.org",
|
||||
"m.room.power_levels", { invite: 42 },
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should set event power levels when changed', (done) => {
|
||||
roomSettings.onPowerLevelsChanged(42, "event_levels_m.room.message");
|
||||
|
||||
roomSettings.save().then(() => {
|
||||
// We expect all state events to be set to the state_default (50)
|
||||
// See powerLevelDescriptors in RoomSettings
|
||||
expectSentStateEvent(
|
||||
"!DdJkzRliezrwpNebLk:matrix.org",
|
||||
"m.room.power_levels", {
|
||||
events: {
|
||||
'm.room.message': 42,
|
||||
'm.room.avatar': 50,
|
||||
'm.room.name': 50,
|
||||
'm.room.canonical_alias': 50,
|
||||
'm.room.history_visibility': 50,
|
||||
'm.room.power_levels': 50,
|
||||
'm.room.topic': 50,
|
||||
'im.vector.modular.widgets': 50,
|
||||
},
|
||||
},
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
// TODO: Rewrite room settings tests for dialog support
|
||||
// import React from 'react';
|
||||
// import ReactDOM from 'react-dom';
|
||||
// import expect from 'expect';
|
||||
// import jest from 'jest-mock';
|
||||
// import Promise from 'bluebird';
|
||||
// import * as testUtils from '../../../test-utils';
|
||||
// import sdk from 'matrix-react-sdk';
|
||||
// const WrappedRoomSettings = testUtils.wrapInMatrixClientContext(sdk.getComponent('views.rooms.RoomSettings'));
|
||||
// import MatrixClientPeg from '../../../../src/MatrixClientPeg';
|
||||
// import SettingsStore from '../../../../src/settings/SettingsStore';
|
||||
//
|
||||
//
|
||||
// describe('RoomSettings', () => {
|
||||
// let parentDiv = null;
|
||||
// let sandbox = null;
|
||||
// let client = null;
|
||||
// let roomSettings = null;
|
||||
// const room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org');
|
||||
//
|
||||
// function expectSentStateEvent(roomId, eventType, expectedEventContent) {
|
||||
// let found = false;
|
||||
// for (const call of client.sendStateEvent.mock.calls) {
|
||||
// const [
|
||||
// actualRoomId,
|
||||
// actualEventType,
|
||||
// actualEventContent,
|
||||
// ] = call.slice(0, 3);
|
||||
//
|
||||
// if (roomId === actualRoomId && actualEventType === eventType) {
|
||||
// expect(actualEventContent).toEqual(expectedEventContent);
|
||||
// found = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// expect(found).toBe(true);
|
||||
// }
|
||||
//
|
||||
// beforeEach(function(done) {
|
||||
// testUtils.beforeEach(this);
|
||||
// sandbox = testUtils.stubClient();
|
||||
// client = MatrixClientPeg.get();
|
||||
// client.credentials = {userId: '@me:domain.com'};
|
||||
//
|
||||
// client.setRoomName = jest.fn().mockReturnValue(Promise.resolve());
|
||||
// client.setRoomTopic = jest.fn().mockReturnValue(Promise.resolve());
|
||||
// client.setRoomDirectoryVisibility = jest.fn().mockReturnValue(Promise.resolve());
|
||||
//
|
||||
// // Covers any room state event (e.g. name, avatar, topic)
|
||||
// client.sendStateEvent = jest.fn().mockReturnValue(Promise.resolve());
|
||||
//
|
||||
// // Covers room tagging
|
||||
// client.setRoomTag = jest.fn().mockReturnValue(Promise.resolve());
|
||||
// client.deleteRoomTag = jest.fn().mockReturnValue(Promise.resolve());
|
||||
//
|
||||
// // Covers any setting in the SettingsStore
|
||||
// // (including local client settings not stored via matrix)
|
||||
// SettingsStore.setValue = jest.fn().mockReturnValue(Promise.resolve());
|
||||
//
|
||||
// parentDiv = document.createElement('div');
|
||||
// document.body.appendChild(parentDiv);
|
||||
//
|
||||
// const gatherWrappedRef = (r) => {roomSettings = r;};
|
||||
//
|
||||
// // get use wrappedRef because we're using wrapInMatrixClientContext
|
||||
// ReactDOM.render(
|
||||
// <WrappedRoomSettings
|
||||
// wrappedRef={gatherWrappedRef}
|
||||
// room={room}
|
||||
// />,
|
||||
// parentDiv,
|
||||
// done,
|
||||
// );
|
||||
// });
|
||||
//
|
||||
// afterEach((done) => {
|
||||
// if (parentDiv) {
|
||||
// ReactDOM.unmountComponentAtNode(parentDiv);
|
||||
// parentDiv.remove();
|
||||
// parentDiv = null;
|
||||
// }
|
||||
// sandbox.restore();
|
||||
// done();
|
||||
// });
|
||||
//
|
||||
// it('should not set when no setting is changed', (done) => {
|
||||
// roomSettings.save().then(() => {
|
||||
// expect(client.sendStateEvent).not.toHaveBeenCalled();
|
||||
// expect(client.setRoomTag).not.toHaveBeenCalled();
|
||||
// expect(client.deleteRoomTag).not.toHaveBeenCalled();
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// // XXX: Apparently we do call SettingsStore.setValue
|
||||
// xit('should not settings via the SettingsStore when no setting is changed', (done) => {
|
||||
// roomSettings.save().then(() => {
|
||||
// expect(SettingsStore.setValue).not.toHaveBeenCalled();
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// it('should set room name when it has changed', (done) => {
|
||||
// const name = "My Room Name";
|
||||
// roomSettings.setName(name);
|
||||
//
|
||||
// roomSettings.save().then(() => {
|
||||
// expect(client.setRoomName.mock.calls[0].slice(0, 2))
|
||||
// .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', name]);
|
||||
//
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// it('should set room topic when it has changed', (done) => {
|
||||
// const topic = "this is a topic";
|
||||
// roomSettings.setTopic(topic);
|
||||
//
|
||||
// roomSettings.save().then(() => {
|
||||
// expect(client.setRoomTopic.mock.calls[0].slice(0, 2))
|
||||
// .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', topic]);
|
||||
//
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// it('should set history visibility when it has changed', (done) => {
|
||||
// const historyVisibility = "translucent";
|
||||
// roomSettings.setState({
|
||||
// history_visibility: historyVisibility,
|
||||
// });
|
||||
//
|
||||
// roomSettings.save().then(() => {
|
||||
// expectSentStateEvent(
|
||||
// "!DdJkzRliezrwpNebLk:matrix.org",
|
||||
// "m.room.history_visibility", {history_visibility: historyVisibility},
|
||||
// );
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// // XXX: Can't test this because we `getRoomDirectoryVisibility` in `componentWillMount`
|
||||
// xit('should set room directory publicity when set to true', (done) => {
|
||||
// const isRoomPublished = true;
|
||||
// roomSettings.setState({
|
||||
// isRoomPublished,
|
||||
// }, () => {
|
||||
// roomSettings.save().then(() => {
|
||||
// expect(client.setRoomDirectoryVisibility.calls[0].arguments.slice(0, 2))
|
||||
// .toEqual("!DdJkzRliezrwpNebLk:matrix.org", isRoomPublished ? "public" : "private");
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// it('should set power levels when changed', (done) => {
|
||||
// roomSettings.onPowerLevelsChanged(42, "invite");
|
||||
//
|
||||
// roomSettings.save().then(() => {
|
||||
// expectSentStateEvent(
|
||||
// "!DdJkzRliezrwpNebLk:matrix.org",
|
||||
// "m.room.power_levels", { invite: 42 },
|
||||
// );
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// it('should set event power levels when changed', (done) => {
|
||||
// roomSettings.onPowerLevelsChanged(42, "event_levels_m.room.message");
|
||||
//
|
||||
// roomSettings.save().then(() => {
|
||||
// // We expect all state events to be set to the state_default (50)
|
||||
// // See powerLevelDescriptors in RoomSettings
|
||||
// expectSentStateEvent(
|
||||
// "!DdJkzRliezrwpNebLk:matrix.org",
|
||||
// "m.room.power_levels", {
|
||||
// events: {
|
||||
// 'm.room.message': 42,
|
||||
// 'm.room.avatar': 50,
|
||||
// 'm.room.name': 50,
|
||||
// 'm.room.canonical_alias': 50,
|
||||
// 'm.room.history_visibility': 50,
|
||||
// 'm.room.power_levels': 50,
|
||||
// 'm.room.topic': 50,
|
||||
// 'im.vector.modular.widgets': 50,
|
||||
// },
|
||||
// },
|
||||
// );
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
|
|
Loading…
Reference in New Issue