Add unit tests for channel utilities and configure testing environment

- Created a new test file `channels.test.ts` to cover utilities related to channel configurations and targets.
- Implemented tests for normalizing and grouping selected channels by type, as well as building channel targets from account data and cron history.
- Mocked necessary dependencies to isolate tests and ensure accurate results.
- Updated `vite.config.ts` to set up the testing environment with jsdom and enable global variables for tests.
This commit is contained in:
duanshuwen
2026-04-18 16:12:49 +08:00
parent ee72cf7261
commit ef46c73c3e
26 changed files with 4056 additions and 186 deletions

View File

@@ -0,0 +1,47 @@
import type { ChannelMeta } from '../../lib/channel-meta';
type ChannelInstructionsPanelProps = {
meta: ChannelMeta;
title: string;
docsLabel: string;
diagnosticsNote: string;
};
export default function ChannelInstructionsPanel({
meta,
title,
docsLabel,
diagnosticsNote,
}: ChannelInstructionsPanelProps) {
return (
<section className="rounded-[16px] border border-[#E5E8EE] bg-[#FAFBFC] p-4 dark:border-[#2a2a2d] dark:bg-[#17171a]">
<div className="text-[13px] font-medium text-[#171717] dark:text-gray-100">{title}</div>
<div className="mt-1 text-[12px] leading-[18px] text-[#99A0AE] dark:text-gray-500">
{docsLabel}
</div>
<div className="mt-3 space-y-2">
<div className="rounded-[12px] border border-dashed border-[#DCE5F1] bg-white px-3 py-2 text-[12px] leading-[18px] text-[#525866] dark:border-[#2a2a2d] dark:bg-[#101013] dark:text-gray-300">
{meta.description}
</div>
{meta.instructions.length > 0 ? (
<ol className="space-y-2">
{meta.instructions.map((instruction) => (
<li
key={instruction}
className="rounded-[12px] border border-[#E5E8EE] bg-white px-3 py-2 text-[12px] leading-[18px] text-[#525866] dark:border-[#2a2a2d] dark:bg-[#101013] dark:text-gray-300"
>
{instruction}
</li>
))}
</ol>
) : null}
</div>
<div className="mt-3 rounded-[12px] bg-[#EFF6FF] px-3 py-2 text-[12px] leading-[18px] text-[#2B4E8C] dark:bg-[#1d2633] dark:text-[#93c5fd]">
{diagnosticsNote}
</div>
</section>
);
}