// 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( // , // 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(); // }); // }); // });