diff --git a/spec/unit/NamespacedValue.spec.ts b/spec/unit/NamespacedValue.spec.ts index 5b0d8e143..834acd0c9 100644 --- a/spec/unit/NamespacedValue.spec.ts +++ b/spec/unit/NamespacedValue.spec.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import {NamespacedValue, UnstableValue} from "../../src/NamespacedValue"; +import { NamespacedValue, UnstableValue } from "../../src/NamespacedValue"; describe("NamespacedValue", () => { it("should prefer stable over unstable", () => { diff --git a/spec/unit/matrix-client.spec.js b/spec/unit/matrix-client.spec.js index 80ff2e5a1..2523c98bd 100644 --- a/spec/unit/matrix-client.spec.js +++ b/spec/unit/matrix-client.spec.js @@ -1,16 +1,17 @@ import { logger } from "../../src/logger"; import { MatrixClient } from "../../src/client"; import { Filter } from "../../src/filter"; -import {DEFAULT_TREE_POWER_LEVELS_TEMPLATE} from "../../src/models/MSC3089TreeSpace"; +import { DEFAULT_TREE_POWER_LEVELS_TEMPLATE } from "../../src/models/MSC3089TreeSpace"; import { EventType, - RoomCreateTypeField, RoomType, + RoomCreateTypeField, + RoomType, UNSTABLE_MSC3088_ENABLED, UNSTABLE_MSC3088_PURPOSE, - UNSTABLE_MSC3089_TREE_SUBTYPE + UNSTABLE_MSC3089_TREE_SUBTYPE, } from "../../src/@types/event"; -import {MEGOLM_ALGORITHM} from "../../src/crypto/olmlib"; -import {MatrixEvent} from "../../src/models/event"; +import { MEGOLM_ALGORITHM } from "../../src/crypto/olmlib"; +import { MatrixEvent } from "../../src/models/event"; jest.useFakeTimers(); @@ -217,7 +218,7 @@ describe("MatrixClient", function() { }, ], }); - return {room_id: roomId}; + return { room_id: roomId }; }); client.getUserId = () => userId; client.createRoom = fn; diff --git a/spec/unit/models/MSC3089Branch.spec.ts b/spec/unit/models/MSC3089Branch.spec.ts index 51b2577ec..fc8b35815 100644 --- a/spec/unit/models/MSC3089Branch.spec.ts +++ b/spec/unit/models/MSC3089Branch.spec.ts @@ -70,15 +70,16 @@ describe("MSC3089Branch", () => { }); it('should be able to delete the file', async () => { - const stateFn = jest.fn().mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { - expect(roomId).toEqual(branchRoomId); - expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test that we're definitely using the unstable value - expect(content).toMatchObject({}); - expect(content['active']).toBeUndefined(); - expect(stateKey).toEqual(fileEventId); + const stateFn = jest.fn() + .mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { + expect(roomId).toEqual(branchRoomId); + expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test that we're definitely using the unstable value + expect(content).toMatchObject({}); + expect(content['active']).toBeUndefined(); + expect(stateKey).toEqual(fileEventId); - return Promise.resolve(); // return value not used - }); + return Promise.resolve(); // return value not used + }); client.sendStateEvent = stateFn; const redactFn = jest.fn().mockImplementation((roomId: string, eventId: string) => { @@ -107,18 +108,19 @@ describe("MSC3089Branch", () => { it('should be able to change its name', async () => { const name = "My File.txt"; indexEvent.getContent = () => ({ active: true, retained: true }); - const stateFn = jest.fn().mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { - expect(roomId).toEqual(branchRoomId); - expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test that we're definitely using the unstable value - expect(content).toMatchObject({ - retained: true, // canary for copying state - active: true, - name: name, - }); - expect(stateKey).toEqual(fileEventId); + const stateFn = jest.fn() + .mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { + expect(roomId).toEqual(branchRoomId); + expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test that we're definitely using the unstable value + expect(content).toMatchObject({ + retained: true, // canary for copying state + active: true, + name: name, + }); + expect(stateKey).toEqual(fileEventId); - return Promise.resolve(); // return value not used - }); + return Promise.resolve(); // return value not used + }); client.sendStateEvent = stateFn; await branch.setName(name); diff --git a/spec/unit/models/MSC3089TreeSpace.spec.ts b/spec/unit/models/MSC3089TreeSpace.spec.ts index cdac36c7b..a99140036 100644 --- a/spec/unit/models/MSC3089TreeSpace.spec.ts +++ b/spec/unit/models/MSC3089TreeSpace.spec.ts @@ -83,13 +83,14 @@ describe("MSC3089TreeSpace", () => { it('should support setting the name of the space', async () => { const newName = "NEW NAME"; - const fn = jest.fn().mockImplementation((stateRoomId: string, eventType: EventType, content: any, stateKey: string) => { - expect(stateRoomId).toEqual(roomId); - expect(eventType).toEqual(EventType.RoomName); - expect(stateKey).toEqual(""); - expect(content).toMatchObject({ name: newName }); - return Promise.resolve(); - }); + const fn = jest.fn() + .mockImplementation((stateRoomId: string, eventType: EventType, content: any, stateKey: string) => { + expect(stateRoomId).toEqual(roomId); + expect(eventType).toEqual(EventType.RoomName); + expect(stateKey).toEqual(""); + expect(content).toMatchObject({ name: newName }); + return Promise.resolve(); + }); client.sendStateEvent = fn; await tree.setName(newName); expect(fn.mock.calls.length).toBe(1); @@ -109,18 +110,19 @@ describe("MSC3089TreeSpace", () => { async function evaluatePowerLevels(pls: any, role: TreePermissions, expectedPl: number) { makePowerLevels(pls); - const fn = jest.fn().mockImplementation((stateRoomId: string, eventType: EventType, content: any, stateKey: string) => { - expect(stateRoomId).toEqual(roomId); - expect(eventType).toEqual(EventType.RoomPowerLevels); - expect(stateKey).toEqual(""); - expect(content).toMatchObject({ - ...pls, - users: { - [targetUser]: expectedPl, - }, + const fn = jest.fn() + .mockImplementation((stateRoomId: string, eventType: EventType, content: any, stateKey: string) => { + expect(stateRoomId).toEqual(roomId); + expect(eventType).toEqual(EventType.RoomPowerLevels); + expect(stateKey).toEqual(""); + expect(content).toMatchObject({ + ...pls, + users: { + [targetUser]: expectedPl, + }, + }); + return Promise.resolve(); }); - return Promise.resolve(); - }); client.sendStateEvent = fn; await tree.setPermissions(targetUser, role); expect(fn.mock.calls.length).toBe(1); @@ -155,7 +157,7 @@ describe("MSC3089TreeSpace", () => { users_default: 1024, users: { [targetUser]: 2222, - } + }, }, TreePermissions.Viewer, 1024); }); @@ -165,7 +167,7 @@ describe("MSC3089TreeSpace", () => { events_default: 1024, users: { [targetUser]: 5, - } + }, }, TreePermissions.Editor, 1024); }); @@ -199,19 +201,20 @@ describe("MSC3089TreeSpace", () => { expect(name).toEqual(subspaceName); return new MSC3089TreeSpace(client, subspaceId); }); - const sendStateFn = jest.fn().mockImplementation(async (roomId: string, eventType: EventType, content: any, stateKey: string) => { - expect([tree.roomId, subspaceId]).toContain(roomId); - if (roomId === subspaceId) { - expect(eventType).toEqual(EventType.SpaceParent); - expect(stateKey).toEqual(tree.roomId); - } else { - expect(eventType).toEqual(EventType.SpaceChild); - expect(stateKey).toEqual(subspaceId); - } - expect(content).toMatchObject({ via: [domain] }); + const sendStateFn = jest.fn() + .mockImplementation(async (roomId: string, eventType: EventType, content: any, stateKey: string) => { + expect([tree.roomId, subspaceId]).toContain(roomId); + if (roomId === subspaceId) { + expect(eventType).toEqual(EventType.SpaceParent); + expect(stateKey).toEqual(tree.roomId); + } else { + expect(eventType).toEqual(EventType.SpaceChild); + expect(stateKey).toEqual(subspaceId); + } + expect(content).toMatchObject({ via: [domain] }); - // return value not used - }); + // return value not used + }); client.unstableCreateFileTree = createFn; client.sendStateEvent = sendStateFn; @@ -311,7 +314,7 @@ describe("MSC3089TreeSpace", () => { // ensure we don't kick ourselves { getContent: () => ({ membership: "join" }), getStateKey: () => selfUserId }, - ] + ]; }, }; @@ -361,7 +364,7 @@ describe("MSC3089TreeSpace", () => { getType: () => EventType.SpaceParent, getStateKey: () => tree.roomId, getContent: () => ({ - via: [staticDomain] + via: [staticDomain], }), }, ]; @@ -408,7 +411,12 @@ describe("MSC3089TreeSpace", () => { roomId: tree.roomId, currentState: { getStateEvents: (eventType: EventType, stateKey?: string) => { - expect([EventType.SpaceChild, EventType.RoomCreate, EventType.SpaceParent]).toContain(eventType); + expect([ + EventType.SpaceChild, + EventType.RoomCreate, + EventType.SpaceParent, + ]).toContain(eventType); + if (eventType === EventType.RoomCreate) { expect(stateKey).toEqual(""); return parentState.filter(e => e.getType() === EventType.RoomCreate)[0]; @@ -429,22 +437,23 @@ describe("MSC3089TreeSpace", () => { (tree).room = parentRoom; // override readonly client.getRoom = (r) => rooms[r]; - clientSendStateFn = jest.fn().mockImplementation((roomId: string, eventType: EventType, content: any, stateKey: string) => { - expect(roomId).toEqual(tree.roomId); - expect(eventType).toEqual(EventType.SpaceChild); - expect(content).toMatchObject(expect.objectContaining({ - via: expect.any(Array), - order: expect.any(String), - })); - expect(Object.keys(rooms)).toContain(stateKey); - expect(stateKey).not.toEqual(tree.roomId); + clientSendStateFn = jest.fn() + .mockImplementation((roomId: string, eventType: EventType, content: any, stateKey: string) => { + expect(roomId).toEqual(tree.roomId); + expect(eventType).toEqual(EventType.SpaceChild); + expect(content).toMatchObject(expect.objectContaining({ + via: expect.any(Array), + order: expect.any(String), + })); + expect(Object.keys(rooms)).toContain(stateKey); + expect(stateKey).not.toEqual(tree.roomId); - const stateEvent = parentState.find(e => e.getType() === eventType && e.getStateKey() === stateKey); - expect(stateEvent).toBeDefined(); - stateEvent.getContent = () => content; + const stateEvent = parentState.find(e => e.getType() === eventType && e.getStateKey() === stateKey); + expect(stateEvent).toBeDefined(); + stateEvent.getContent = () => content; - return Promise.resolve(); // return value not used - }); + return Promise.resolve(); // return value not used + }); client.sendStateEvent = clientSendStateFn; }); @@ -652,7 +661,7 @@ describe("MSC3089TreeSpace", () => { const d = "!d:example.org"; // Add in reverse order to make sure it gets ordered correctly - addSubspace(d, 4, "Z") + addSubspace(d, 4, "Z"); addSubspace(c, 3, "X"); addSubspace(b, 2, "V"); addSubspace(a, 1, "T"); @@ -681,7 +690,7 @@ describe("MSC3089TreeSpace", () => { const d = "!d:example.org"; // Add in reverse order to make sure it gets ordered correctly - addSubspace(d, 4, "Z") + addSubspace(d, 4, "Z"); addSubspace(c, 3, "X"); addSubspace(b, 2, "V"); addSubspace(a, 1, "T"); @@ -710,7 +719,7 @@ describe("MSC3089TreeSpace", () => { const d = "!d:example.org"; // Add in reverse order to make sure it gets ordered correctly - addSubspace(d, 4) + addSubspace(d, 4); addSubspace(c, 3); addSubspace(b, 2, "V"); addSubspace(a, 1, "T"); @@ -775,17 +784,18 @@ describe("MSC3089TreeSpace", () => { }); client.sendMessage = sendMsgFn; - const sendStateFn = jest.fn().mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { - expect(roomId).toEqual(tree.roomId); - expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test to ensure we're definitely using unstable - expect(stateKey).toEqual(fileEventId); - expect(content).toMatchObject({ - active: true, - name: fileName, - }); + const sendStateFn = jest.fn() + .mockImplementation((roomId: string, eventType: string, content: any, stateKey: string) => { + expect(roomId).toEqual(tree.roomId); + expect(eventType).toEqual(UNSTABLE_MSC3089_BRANCH.unstable); // test to ensure we're definitely using unstable + expect(stateKey).toEqual(fileEventId); + expect(content).toMatchObject({ + active: true, + name: fileName, + }); - return Promise.resolve(); // return value not used. - }); + return Promise.resolve(); // return value not used. + }); client.sendStateEvent = sendStateFn; const buf = Uint8Array.from(Array.from(fileContents).map((_, i) => fileContents.charCodeAt(i))); diff --git a/spec/unit/utils.spec.js b/spec/unit/utils.spec.js index 3f461c714..e922302cf 100644 --- a/spec/unit/utils.spec.js +++ b/spec/unit/utils.spec.js @@ -4,8 +4,9 @@ import { averageBetweenStrings, baseToString, DEFAULT_ALPHABET, - nextString, prevString, - stringToBase + nextString, + prevString, + stringToBase, } from "../../src/utils"; describe("utils", function() { @@ -270,7 +271,9 @@ describe("utils", function() { describe('DEFAULT_ALPHABET', () => { it('should be usefully printable ASCII in order', () => { - expect(DEFAULT_ALPHABET).toEqual(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); + expect(DEFAULT_ALPHABET).toEqual( + " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~", + ); }); }); diff --git a/src/@types/requests.ts b/src/@types/requests.ts index b402bbdcb..a919727a9 100644 --- a/src/@types/requests.ts +++ b/src/@types/requests.ts @@ -74,9 +74,9 @@ export interface ICreateRoomOpts { name?: string; topic?: string; preset?: string; - power_level_content_override?: any; - creation_content?: any; - initial_state?: {type: string, state_key: string, content: any}[]; + power_level_content_override?: any;// eslint-disable-line camelcase + creation_content?: any;// eslint-disable-line camelcase + initial_state?: {type: string, state_key: string, content: any}[]; // eslint-disable-line camelcase // TODO: Types (next line) invite_3pid?: any[]; // eslint-disable-line camelcase } diff --git a/src/client.ts b/src/client.ts index 65a42968d..ad0f87510 100644 --- a/src/client.ts +++ b/src/client.ts @@ -104,7 +104,8 @@ import { RoomCreateTypeField, RoomType, UNSTABLE_MSC3088_ENABLED, - UNSTABLE_MSC3088_PURPOSE, UNSTABLE_MSC3089_TREE_SUBTYPE + UNSTABLE_MSC3088_PURPOSE, + UNSTABLE_MSC3089_TREE_SUBTYPE, } from "./@types/event"; import { IImageInfo } from "./@types/partials"; import { EventMapper, eventMapperFor, MapperOpts } from "./event-mapper";