mirror of
https://github.com/the-draupnir-project/Draupnir.git
synced 2026-09-27 04:57:53 +00:00
60 lines
2.4 KiB
TypeScript
60 lines
2.4 KiB
TypeScript
import expect from "expect";
|
|
import {
|
|
Keyword,
|
|
readCommand,
|
|
} from "../../src/commands/interface-manager/CommandReader";
|
|
import { MatrixRoomAlias, MatrixRoomID, UserID } from "matrix-protection-suite";
|
|
|
|
describe("Can read", function () {
|
|
it("Can read a simple command with only strings", function () {
|
|
const command = "!mjolnir list rooms";
|
|
const readItems = readCommand(command);
|
|
expect(readItems.every((item) => command.includes(item as string))).toBe(
|
|
true
|
|
);
|
|
});
|
|
it("Can turn room aliases to room references", function () {
|
|
const command = "#meow:example.org";
|
|
const readItems = readCommand(command);
|
|
expect(readItems.at(0)).toBeInstanceOf(MatrixRoomAlias);
|
|
const roomReference = readItems.at(0) as MatrixRoomAlias;
|
|
expect(roomReference.toRoomIDOrAlias()).toBe(command);
|
|
});
|
|
it("Can turn room ids to room references", function () {
|
|
const command = "!foijoiejfoij:example.org";
|
|
const readItems = readCommand(command);
|
|
expect(readItems.at(0)).toBeInstanceOf(MatrixRoomID);
|
|
const roomReference = readItems.at(0) as MatrixRoomID;
|
|
expect(roomReference.toRoomIDOrAlias()).toBe(command);
|
|
});
|
|
it("Can read keywords and correctly parse their designators", function () {
|
|
const checkKeyword = (designator: string, keyword: string) => {
|
|
const readItems = readCommand(keyword);
|
|
expect(readItems.at(0)).toBeInstanceOf(Keyword);
|
|
const keywordItem = readItems.at(0) as Keyword;
|
|
expect(keywordItem.designator).toBe(designator);
|
|
};
|
|
checkKeyword("foo", "--foo");
|
|
checkKeyword("foo", "-foo");
|
|
checkKeyword("f", "-f");
|
|
checkKeyword("foo", ":foo");
|
|
checkKeyword("f", ":f");
|
|
});
|
|
it("Check that malformed room ids and aliases are read as strings", function () {
|
|
// We leave it for the command to validate the arguments it receives intentionally.
|
|
// From the perspective of the user, their command will fail just as early but with more context this way.
|
|
const checkMalformedRoomReference = (badReference: string) => {
|
|
expect(readCommand(badReference).at(0)).toBe(badReference);
|
|
};
|
|
checkMalformedRoomReference("#singasongaboutlife");
|
|
checkMalformedRoomReference("!mjolnir");
|
|
});
|
|
it("Can parse userID's", function () {
|
|
const command = "@spam:example.com";
|
|
const readItems = readCommand(command);
|
|
expect(readItems.at(0)).toBeInstanceOf(UserID);
|
|
const user = readItems.at(0) as UserID;
|
|
expect(user.localpart).toBe("spam");
|
|
});
|
|
});
|