mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Change the expected exported name of plugin declarations to be "plugin" at the main entrypoint instead of the default export. This makes the plugin's code organisation more flexible especially when using CommonJS JavaScript modules as they can export additional symbols from the plugin declaration file.
72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
"use strict";
|
|
const assert = require("assert").strict;
|
|
const lib = require("@clusterio/lib");
|
|
|
|
const mock = require("../../../test/mock");
|
|
const lines = require("../../../test/lib/factorio/lines");
|
|
const instance = require("../dist/plugin/instance");
|
|
const info = require("../dist/plugin/index").plugin;
|
|
const { ChatEvent } = require("../dist/plugin/messages");
|
|
|
|
|
|
describe("global_chat plugin", function() {
|
|
describe("removeTags()", function() {
|
|
it("should pass through an ordinary string", function() {
|
|
assert.equal(instance._removeTags("string"), "string");
|
|
});
|
|
it("should strip out gps tag", function() {
|
|
assert.equal(instance._removeTags("Look at [gps=12,-4]"), "Look at ");
|
|
});
|
|
it("should strip out train tag", function() {
|
|
assert.equal(instance._removeTags("Train [train=1235]"), "Train ");
|
|
});
|
|
});
|
|
|
|
describe("class InstancePlugin", function() {
|
|
let instancePlugin;
|
|
|
|
before(async function() {
|
|
lib.Link.register(ChatEvent);
|
|
instancePlugin = new instance.InstancePlugin(info, new mock.MockInstance(), new mock.MockHost());
|
|
await instancePlugin.init();
|
|
});
|
|
|
|
describe(".handleChatEvent()", function() {
|
|
it("should send received chat as command", async function() {
|
|
instancePlugin.instance.server.rconCommands = [];
|
|
await instancePlugin.handleChatEvent(new ChatEvent("test", "User: message"));
|
|
assert.deepEqual(
|
|
instancePlugin.instance.server.rconCommands,
|
|
["/sc game.print('[test] User: message')"],
|
|
);
|
|
});
|
|
});
|
|
describe(".onOutput()", function() {
|
|
it("should forward chat", async function() {
|
|
let count = 0;
|
|
for (let [_, output] of lines.testLines) {
|
|
if (output.type === "action" && output.action === "CHAT") {
|
|
instancePlugin.instance.connector.sentMessages = [];
|
|
await instancePlugin.onOutput(output);
|
|
assert(instancePlugin.instance.connector.sentMessages.length, "message was not sent");
|
|
count += 1;
|
|
}
|
|
}
|
|
assert(count > 0, "no lines were tested");
|
|
});
|
|
it("should ignore regular output", async function() {
|
|
let count = 0;
|
|
for (let [_, output] of lines.testLines) {
|
|
if (output.type !== "action" || output.action !== "CHAT") {
|
|
instancePlugin.instance.connector.sentMessages = [];
|
|
await instancePlugin.onOutput(output);
|
|
assert(!instancePlugin.instance.connector.sentMessages.length, "message was sent");
|
|
count += 1;
|
|
}
|
|
}
|
|
assert(count > 0, "no lines were tested");
|
|
});
|
|
});
|
|
});
|
|
});
|