Files
Pier_v1/tests/abut-member-list.test.ts
ypshimandClaude Haiku 5.5 59c2607418 feat(abut): 교대 지반·지층 카드 — 교각과 같은 위치 · 수위 · 지층 행 입력, 교대 단면 삽도, 검사
- 위치 (육상 · 하상 · 해상)와 위치별 수위 입력, 지층 행 표 (교각과 공용 strataRowsEditor), 지반 모델 지층 불러오기
- 검사: 교각과 같은 G01–G14, 말뚝 근입 G04, 지반고 < 저판 하면이면 정보 AI01
- 삽도: 지층 · 수위 띠를 교각과 공용으로 빼고, 교대축 직각 단면(저판 · 벽체 · 흉벽 · 말뚝 열)을 EL. 표기로 그림
- 자동 값: 지반고 (엑셀 입력), 연암층 상면 EL, 지층 수. 프로젝트 파일 저장 · 검증

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-04 10:36:23 +09:00

52 lines
2.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { ABUT_MEMBER_EDITABLE, abutMemberRows } from '../src/core/abut/member-list';
const base = {
bearings: [{ seatEl: undefined }, { seatEl: undefined }],
groundEl: 33.984,
};
describe('교대 부재 목록 (시안 ② 부재 · 교대)', () => {
it('has the six rows of the mockup, in order', () => {
const rows = abutMemberRows(base, '11.253 m');
expect(rows.map((r) => r.id)).toEqual(['bearing', 'shape', 'footing', 'wing', 'slab', 'ground']);
expect(rows[0].label).toBe('교량받침·받침블럭·솔플레이트');
});
it('a default abutment shows no change marks', () => {
expect(abutMemberRows(base, '—').every((r) => !r.changed)).toBe(true);
});
it('marks the shape when a value differs from the default', () => {
const rows = abutMemberRows({ ...base, shape: { parapetHeightMm: 2200 } }, '—');
expect(rows.find((r) => r.id === 'shape')?.changed).toBe(true);
expect(rows.find((r) => r.id === 'shape')?.summary).toBe('벽체 두께 2400 (자동) · 흉벽 2200');
expect(rows.find((r) => r.id === 'footing')?.changed).toBe(false);
const foot = abutMemberRows({ ...base, shape: { footingThicknessMm: 1300 } }, '—');
expect(foot.find((r) => r.id === 'footing')?.changed).toBe(true);
expect(foot.find((r) => r.id === 'shape')?.changed).toBe(false);
});
it('marks the wing when a side is not the general form, and names both sides', () => {
const rows = abutMemberRows({ ...base, wings: { left: 'general', right: 'short' } }, '—');
const wing = rows.find((r) => r.id === 'wing');
expect(wing?.changed).toBe(true);
expect(wing?.summary).toBe('좌 일반형 · 우 단축형');
});
it('marks a 받침 that has its own 교좌면 EL', () => {
const rows = abutMemberRows({ ...base, bearings: [{ seatEl: 44.4 }, { seatEl: undefined }] }, '—');
expect(rows[0].changed).toBe(true);
});
it('shows the slab width text and the ground EL as given', () => {
const rows = abutMemberRows(base, '11.253 m');
expect(rows.find((r) => r.id === 'slab')?.summary).toBe('매립형 · 하향 4 % · 폭 11.253 m');
expect(rows.find((r) => r.id === 'ground')?.summary).toBe('육상 · 지층 0 · 지반고 EL.33.984');
});
it('every card takes input in this step (접속슬래브 · 지반 2026-11-04)', () => {
expect(ABUT_MEMBER_EDITABLE).toEqual({ bearing: true, shape: true, footing: true, wing: true, slab: true, ground: true });
});
});