first commit

This commit is contained in:
Alberto-Audrix committed 2026-08-26 13:46:05 +07:00
commit 367533c02b
171 files changed
+101175

No files matched your search

@@ -0,0 +1,72 @@
import { render, screen } from '@testing-library/react';
import { describe, expect, it, vi } from 'vitest';
import DataManagementPage from '../DataManagementPage.tsx';
vi.mock('../../../services/apiClient.ts', () => ({
api: {
kpis: {
list: vi.fn().mockResolvedValue([]),
},
countings: {
list: vi.fn().mockResolvedValue([]),
create: vi.fn(),
update: vi.fn(),
},
manualInputs: {
list: vi.fn().mockResolvedValue([]),
create: vi.fn(),
},
insights: {
list: vi.fn().mockResolvedValue([]),
},
},
errorMessage: (err: unknown) => (err instanceof Error ? err.message : 'Terjadi kesalahan'),
}));
vi.mock('../../../context/FarmContext.tsx', () => ({
useFarm: () => ({
selectedSite: { id: 1, site_name: 'Sukawarna', user: 1, created_at: '', updated_at: '' },
selectedKandang: {
id: 1,
kandang_name: 'Kandang 1',
site: 1,
created_at: '',
updated_at: '',
},
selectedCycle: {
id: 1,
kandang: 1,
flock: 1,
total_days: 35,
current_day: 3,
start_date: '2026-08-10',
end_date: '2026-09-13',
chick_in_weight: 45,
doc_in_count: 20000,
status: 'active',
created_at: '',
updated_at: '',
},
}),
}));
describe('DataManagementPage', () => {
it('renders the Hitung Ayam dashboard view with stats and daily rows', async () => {
render(<DataManagementPage onSettings={() => undefined} />);
expect(await screen.findByRole('heading', { name: 'Hitung Ayam' })).toBeInTheDocument();
expect(screen.getByText(/Populasi Awal/i)).toBeInTheDocument();
expect(screen.getByText(/Total Mortalitas/i)).toBeInTheDocument();
expect(screen.getByText(/Tingkat Mortalitas/i)).toBeInTheDocument();
expect(screen.getAllByText(/Hari 0/i).length).toBeGreaterThan(0);
expect(screen.getAllByText(/Hari 2/i).length).toBeGreaterThan(0);
});
it('does not offer manual or counting input forms', async () => {
render(<DataManagementPage onSettings={() => undefined} />);
expect(await screen.findByRole('heading', { name: 'Hitung Ayam' })).toBeInTheDocument();
expect(screen.queryByRole('heading', { name: /Input manual/i })).not.toBeInTheDocument();
expect(screen.queryByRole('button', { name: /Simpan hitungan/i })).not.toBeInTheDocument();
});
});