test(extensions): dedupe bundled entry smoke tests

This commit is contained in:
Vincent Koc
2026-04-12 03:08:25 +01:00
parent 9d126dc645
commit 45147d5ce3
7 changed files with 83 additions and 59 deletions

View File

@@ -1,16 +1,13 @@
import { describe, expect, it } from "vitest";
import { describe } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
describe("discord bundled entries", () => {
it("declares the channel plugin without importing the broad api barrel", () => {
expect(entry.kind).toBe("bundled-channel-entry");
expect(entry.id).toBe("discord");
expect(entry.name).toBe("Discord");
});
it("declares the setup plugin without importing the broad api barrel", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "discord",
expectedName: "Discord",
setupEntry,
});
});

View File

@@ -1,16 +1,13 @@
import { describe, expect, it } from "vitest";
import { describe } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
describe("irc bundled entries", () => {
it("declares the channel plugin without importing the broad api barrel", () => {
expect(entry.kind).toBe("bundled-channel-entry");
expect(entry.id).toBe("irc");
expect(entry.name).toBe("IRC");
});
it("declares the setup plugin without importing the broad api barrel", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "irc",
expectedName: "IRC",
setupEntry,
});
});

View File

@@ -1,16 +1,13 @@
import { describe, expect, it } from "vitest";
import { describe } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
describe("slack bundled entries", () => {
it("declares the channel plugin without importing the broad api barrel", () => {
expect(entry.kind).toBe("bundled-channel-entry");
expect(entry.id).toBe("slack");
expect(entry.name).toBe("Slack");
});
it("declares the setup plugin without importing the broad api barrel", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "slack",
expectedName: "Slack",
setupEntry,
});
});

View File

@@ -1,4 +1,5 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeEach, describe, vi } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
@@ -7,13 +8,11 @@ describe("telegram bundled entries", () => {
vi.useRealTimers();
});
it("declares the channel entry without importing the broad api barrel", () => {
expect(entry.id).toBe("telegram");
expect(entry.name).toBe("Telegram");
});
it("declares the setup plugin without importing the broad api barrel", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "telegram",
expectedName: "Telegram",
setupEntry,
channelMessage: "declares the channel entry without importing the broad api barrel",
});
});

View File

@@ -1,16 +1,13 @@
import { describe, expect, it } from "vitest";
import { describe } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
describe("whatsapp bundled entries", () => {
it("declares the channel plugin without importing the broad api barrel", () => {
expect(entry.kind).toBe("bundled-channel-entry");
expect(entry.id).toBe("whatsapp");
expect(entry.name).toBe("WhatsApp");
});
it("declares the setup plugin without importing the broad api barrel", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "whatsapp",
expectedName: "WhatsApp",
setupEntry,
});
});

View File

@@ -1,16 +1,15 @@
import { describe, expect, it } from "vitest";
import { describe } from "vitest";
import { assertBundledChannelEntries } from "../../test/helpers/bundled-channel-entry.ts";
import entry from "./index.js";
import setupEntry from "./setup-entry.js";
describe("zalo bundled entries", () => {
it("declares the channel plugin without a runtime-barrel cycle", () => {
expect(entry.kind).toBe("bundled-channel-entry");
expect(entry.id).toBe("zalo");
expect(entry.name).toBe("Zalo");
});
it("declares the setup plugin without a runtime-barrel cycle", () => {
expect(setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof setupEntry.loadSetupPlugin).toBe("function");
assertBundledChannelEntries({
entry,
expectedId: "zalo",
expectedName: "Zalo",
setupEntry,
channelMessage: "declares the channel plugin without a runtime-barrel cycle",
setupMessage: "declares the setup plugin without a runtime-barrel cycle",
});
});

View File

@@ -0,0 +1,38 @@
import { expect, it } from "vitest";
type BundledChannelEntry = {
id: string;
kind?: string;
name: string;
};
type BundledChannelSetupEntry = {
kind?: string;
loadSetupPlugin?: unknown;
};
export function assertBundledChannelEntries(params: {
entry: BundledChannelEntry;
expectedId: string;
expectedName: string;
setupEntry: BundledChannelSetupEntry;
channelMessage?: string;
setupMessage?: string;
}) {
it(
params.channelMessage ?? "declares the channel plugin without importing the broad api barrel",
() => {
expect(params.entry.kind).toBe("bundled-channel-entry");
expect(params.entry.id).toBe(params.expectedId);
expect(params.entry.name).toBe(params.expectedName);
},
);
it(
params.setupMessage ?? "declares the setup plugin without importing the broad api barrel",
() => {
expect(params.setupEntry.kind).toBe("bundled-channel-setup-entry");
expect(typeof params.setupEntry.loadSetupPlugin).toBe("function");
},
);
}