/*
Copyright 2026 Element Creations Ltd.
Copyright 2023 Nordeck IT + Consulting GmbH

SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/

import { describe, expect, it } from "vitest";

import { matchPattern } from "./matchPattern";

describe("matchPattern", () => {
    it.each([
        "*",
        "org.matrix.msc2762.receive.*",
        "org.matrix.msc2762.receive.state_event:*",
        "org.matrix.msc2762.receive.state_event:m.custom*",
        "org.matrix.msc2762.receive.state_event:m.custom#*",
        "org.matrix.msc2762.receive.state_event:m.custom#state_key",
        "org.matrix.msc2762.receive.state_event:m.custom#state_key*",
    ])("matches %s", (pattern) => {
        expect(matchPattern("org.matrix.msc2762.receive.state_event:m.custom#state_key", pattern)).toBe(true);
    });

    it.each([
        "org.matrix.msc2762.receive.state_event:",
        "org.matrix.msc2762.receive.state_event:m.custom",
        "org.matrix.msc2762.receive.state_event:m.custom#other_key",
        "org.matrix.msc2762.receive.*:m.custom#state_key",
        "org.matrix.msc2762.receive.room_event:m.custom",
    ])("does not match %s", (pattern) => {
        expect(matchPattern("org.matrix.msc2762.receive.state_event:m.custom#state_key", pattern)).toBe(false);
    });
});
