Files
Pier_v1/tests/abut-section-svg.test.ts
T
ypshimandClaude Haiku 5.5 789f62adf0 refactor(plan): 형상계획 ②의 교대 기본 정보 입력칸 제거, 삽도에 EL 표시
- ②의 교대 편집 영역에서 기본 정보 6칸과 기본값 복원 버튼을 뺌. 기본 정보 편집과 복원은 ①에만 남김
- ②의 삽도에 교좌면·기초 하단·지반고 값을 읽기 전용 라벨로 표시 (abut-section-svg.ts의 AbutLevels)
- 날개벽 형식은 ②의 날개벽 카드에 그대로 둠
- 테스트 631건 통과, 타입 검사·빌드 통과. 브라우저 시각 확인은 미실시

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-03 15:31:54 +09:00

35 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { ABUT_SHAPE_DEFAULT, resolveShape } from '../src/core/abut/shape';
import { abutSectionSvg } from '../src/view/abut-section-svg';
describe('교대 삽도 (벽체·흉벽 개략 단면, 시안 ②)', () => {
it('names the card values in mm, including the new ones', () => {
const svg = abutSectionSvg(resolveShape(), ABUT_SHAPE_DEFAULT);
expect(svg).toContain('흉벽 높이 2500');
expect(svg).toContain('벽체 두께 2400');
expect(svg).toContain('저판 뒷굽 -1800');
expect(svg).toContain('수축줄눈 1개');
expect(svg).toContain('Level 좌 450 · 우 995');
});
it('follows a changed value, and says it is not to scale', () => {
const v = { ...ABUT_SHAPE_DEFAULT, shrinkJointCount: 3, parapetHeightMm: 2200 };
const svg = abutSectionSvg(resolveShape(v), v);
expect(svg).toContain('수축줄눈 3개');
expect(svg).toContain('흉벽 높이 2200');
expect(svg).toContain('축척 아님');
});
it('names the 교좌면, 기초 하단 and 지반고 EL as read-only labels when given', () => {
const svg = abutSectionSvg(resolveShape(), ABUT_SHAPE_DEFAULT, { seatEl: 44.367, footingBottomEl: 40.895, groundEl: 33.984 });
expect(svg).toContain('교좌면 44.367 · 기초 하단 40.895 · 지반고 33.984 m');
});
it('draws the footing, wall and parapet as separate shapes', () => {
const svg = abutSectionSvg(resolveShape(), ABUT_SHAPE_DEFAULT);
expect(svg.match(/<rect /g)).toHaveLength(3);
expect(svg.startsWith('<svg')).toBe(true);
expect(svg.endsWith('</svg>')).toBe(true);
});
});