44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import { describe, expect, it } from 'vitest';
|
|
import CountingAccuracyWarningBanner from '../CountingAccuracyWarningBanner.tsx';
|
|
import type { CountingAccuracyWarning } from '../../../utils/countingAccuracyWarning.ts';
|
|
|
|
const base: CountingAccuracyWarning = {
|
|
day: 2,
|
|
date: '2026-08-12',
|
|
iotCount: 900,
|
|
stockAkhir: 1000,
|
|
accuracy: 90,
|
|
ratioPercent: 90,
|
|
direction: 'under',
|
|
};
|
|
|
|
describe('CountingAccuracyWarningBanner', () => {
|
|
it('renders under-count manager checklist', () => {
|
|
render(<CountingAccuracyWarningBanner warning={base} />);
|
|
expect(screen.getByText(/IoT lebih rendah dari stock/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/video kamera lengkap/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/Hari 2/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/90%/)).toBeInTheDocument();
|
|
});
|
|
|
|
it('renders over-count fraud / AI checklist', () => {
|
|
render(
|
|
<CountingAccuracyWarningBanner
|
|
warning={{
|
|
...base,
|
|
iotCount: 1060,
|
|
stockAkhir: 1000,
|
|
accuracy: 94.3,
|
|
ratioPercent: 106,
|
|
direction: 'over',
|
|
}}
|
|
/>
|
|
);
|
|
expect(screen.getByText(/lebih tinggi dari stock manual/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/fraud/i)).toBeInTheDocument();
|
|
expect(screen.getByText(/akurasi 94,3%/i)).toBeInTheDocument();
|
|
expect(screen.queryByText(/106%/)).not.toBeInTheDocument();
|
|
});
|
|
});
|