Files
govoplan-campaign/webui/tests/policy-ui.test.ts

43 lines
2.2 KiB
TypeScript

import { campaignMailSettingsPolicyState } from "../src/features/campaigns/policyUi";
function assert(condition: unknown, message: string): void {
if (!condition) throw new Error(message);
}
const blockedInline = campaignMailSettingsPolicyState({
effectivePolicy: { allow_campaign_profiles: false },
selectedProfileId: ""
});
assert(blockedInline.campaignProfilesAllowed === false, "Blocked policy must not allow campaign-local settings.");
assert(blockedInline.inlineMailSettingsBlocked === true, "Inline SMTP/IMAP must be blocked when no reusable profile is selected.");
assert(blockedInline.inlineOptionDisabled === true, "Inline option must be disabled under a blocking policy.");
assert(blockedInline.canSelectInlineSettings === false, "Blocked inline option must not be selectable.");
const blockedWithReusableProfile = campaignMailSettingsPolicyState({
effectivePolicy: { allow_campaign_profiles: false },
selectedProfileId: "tenant-profile"
});
assert(blockedWithReusableProfile.inlineMailSettingsBlocked === false, "Reusable profiles must remain usable when campaign-local settings are blocked.");
assert(blockedWithReusableProfile.inlineOptionDisabled === true, "Inline option remains disabled even while a reusable profile is selected.");
const allowedInline = campaignMailSettingsPolicyState({
effectivePolicy: { allow_campaign_profiles: true },
selectedProfileId: ""
});
assert(allowedInline.campaignProfilesAllowed === true, "Allowed policy must allow campaign-local settings.");
assert(allowedInline.inlineMailSettingsBlocked === false, "Inline SMTP/IMAP must be available when campaign-local settings are allowed.");
assert(allowedInline.inlineOptionDisabled === false, "Inline option must be enabled under an allowing policy.");
assert(allowedInline.canSelectInlineSettings === true, "Allowed inline option must be selectable.");
const lockedInline = campaignMailSettingsPolicyState({
effectivePolicy: { allow_campaign_profiles: true },
selectedProfileId: "",
locked: true
});
assert(lockedInline.inlineOptionDisabled === false, "Policy does not disable inline settings when the policy allows them.");
assert(lockedInline.canSelectInlineSettings === false, "A locked version still must not allow selecting inline settings.");