import { describe, expect, it } from 'vitest'; import { existsSync, readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { parseWorkbook } from '../src/core/parseWorkbook'; import { loadWorkbook } from './helpers'; // The standing input is RAG/운곡교P1입력.xlsx. The app serves a copy in public/samples; the two must stay identical. const RAG_INPUT = fileURLToPath(new URL('../../../RAG/운곡교P1입력.xlsx', import.meta.url)); const APP_COPY = fileURLToPath(new URL('../public/samples/운곡교P1입력.xlsx', import.meta.url)); describe('표준 입력 파일 (운곡교P1입력.xlsx)', () => { it('the app sample is byte-identical to RAG/운곡교P1입력.xlsx', () => { if (!existsSync(RAG_INPUT)) return; // RAG folder not present in this checkout expect(readFileSync(APP_COPY).equals(readFileSync(RAG_INPUT))).toBe(true); }); it('reads one pier, P1, T형, 말뚝기초, with 10 bearings', () => { const { piers, issues } = parseWorkbook(loadWorkbook()); expect(issues).toEqual([]); expect(piers.map((p) => p.name)).toEqual(['P1']); expect(piers[0].type).toBe('T형'); expect(piers[0].foundationType).toBe('말뚝기초'); expect(piers[0].bearings).toHaveLength(10); }); });