31 lines
1.5 KiB
TypeScript
31 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { matchesAutomationActionFilter } from "@shared/automationActions";
|
||
|
||
describe("matchesAutomationActionFilter", () => {
|
||
it("filtre chaque type d’action métier", () => {
|
||
const actions = JSON.stringify({
|
||
typeAchat: "OPEX",
|
||
serviceConcerne: "DSI SANTINOVA",
|
||
ventilationComptable: "SANTINOVA",
|
||
});
|
||
|
||
expect(matchesAutomationActionFilter(actions, "typeAchat")).toBe(true);
|
||
expect(matchesAutomationActionFilter(actions, "serviceConcerne")).toBe(true);
|
||
expect(matchesAutomationActionFilter(actions, "ventilationComptable")).toBe(true);
|
||
expect(matchesAutomationActionFilter(actions, "subscription")).toBe(false);
|
||
});
|
||
|
||
it("distingue les règles Abonnement Oui et Non", () => {
|
||
expect(matchesAutomationActionFilter('{"isSubscription":1}', "subscription")).toBe(true);
|
||
expect(matchesAutomationActionFilter('{"isSubscription":1}', "subscriptionYes")).toBe(true);
|
||
expect(matchesAutomationActionFilter('{"isSubscription":1}', "subscriptionNo")).toBe(false);
|
||
expect(matchesAutomationActionFilter('{"isSubscription":0}', "subscriptionYes")).toBe(false);
|
||
expect(matchesAutomationActionFilter('{"isSubscription":0}', "subscriptionNo")).toBe(true);
|
||
});
|
||
|
||
it("tolère les règles historiques invalides sans masquer le filtre Toutes les actions", () => {
|
||
expect(matchesAutomationActionFilter("json-invalide", "all")).toBe(true);
|
||
expect(matchesAutomationActionFilter("json-invalide", "subscription")).toBe(false);
|
||
});
|
||
});
|