Files
AetherForge/server/web/src/help/chartSampleData.test.ts
AetherForge 8466c7aa9b fix: 2026-06-04 audit pass — README, USB pack, multi-area fixes
WS ticket dashboard auth, builder universal signing/size limits/fusion obfuscation/dropper bundles, Path Tracer WireGuard topology, SessionGate degraded mode and download timeouts, server bootstrap (data dir, cloudflared dedupe, config port precedence), agent mesh/miner/spread fixes. README refreshed; usb bundle repacked; PROBLEMS.md audit log updated.
2026-06-04 20:41:44 -07:00

41 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
generateSampleSeries,
validateChartSeries,
resolveChartSeries,
chartSeriesDelta,
chartSeriesPeak,
} from './chartSampleData';
describe('chartSampleData', () => {
const kinds = ['hashrate', 'accept', 'cpu', 'mem', 'gpu'] as const;
it.each(kinds)('generateSampleSeries(%s) validates', (kind) => {
const series = generateSampleSeries(kind, 48);
expect(series).toHaveLength(48);
const v = validateChartSeries(series);
expect(v.ok, v.errors.join('; ')).toBe(true);
expect(chartSeriesPeak(series)).toBeGreaterThan(0);
});
it('resolveChartSeries returns empty when live is empty', () => {
const { data, mode } = resolveChartSeries([]);
expect(mode).toBe('empty');
expect(data).toHaveLength(0);
});
it('resolveChartSeries returns live slice when data exists', () => {
const live = generateSampleSeries('cpu', 20);
const { data, mode } = resolveChartSeries(live);
expect(mode).toBe('live');
expect(data.length).toBe(20);
});
it('chartSeriesDelta computes trend', () => {
const series = generateSampleSeries('hashrate', 48);
const delta = chartSeriesDelta(series);
expect(delta).not.toBeNull();
expect(delta!).toBeGreaterThan(0);
});
});