|
|
@@ -0,0 +1,60 @@
|
|
|
+package com.etotem.cfc.unit;
|
|
|
+
|
|
|
+import com.etotem.cfc.service.FamilyRelationshipService;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+
|
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
+
|
|
|
+/**
|
|
|
+ * family_relationships.generation_value 的标签约定回归(契约 = from.generation - to.generation):
|
|
|
+ * 正数 = 起点辈分更高(对方是晚辈:子/孙/曾孙…);负数 = 起点辈分更低(对方是长辈:父/祖/曾祖…)。
|
|
|
+ *
|
|
|
+ * <p>2026-11-08 修复:computeRelationshipLabel 原按「对方相对查看者的辈分差」解析,与 family_relationships
|
|
|
+ * 存储约定(from.generation - to.generation)方向相反,导致 createRelationsForNewMember 及家庭关系列表
|
|
|
+ * 兜底标签出现「把父辈标成女儿」的反转。本测试固化「存储约定」语义。</p>
|
|
|
+ */
|
|
|
+class FamilyRelationshipServiceLabelTest {
|
|
|
+
|
|
|
+ private final FamilyRelationshipService service = new FamilyRelationshipService();
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 正向差_对方是晚辈_子辈标签() {
|
|
|
+ assertEquals("儿子", service.computeRelationshipLabel(1, "male"));
|
|
|
+ assertEquals("女儿", service.computeRelationshipLabel(1, "female"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 负向差_对方是长辈_父辈标签() {
|
|
|
+ assertEquals("父亲", service.computeRelationshipLabel(-1, "male"));
|
|
|
+ assertEquals("母亲", service.computeRelationshipLabel(-1, "female"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 同辈标签() {
|
|
|
+ assertEquals("兄弟", service.computeRelationshipLabel(0, "male"));
|
|
|
+ assertEquals("姐妹", service.computeRelationshipLabel(0, "female"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 祖孙辈标签() {
|
|
|
+ assertEquals("孙子", service.computeRelationshipLabel(2, "male"));
|
|
|
+ assertEquals("孙女", service.computeRelationshipLabel(2, "female"));
|
|
|
+ assertEquals("祖父", service.computeRelationshipLabel(-2, "male"));
|
|
|
+ assertEquals("祖母", service.computeRelationshipLabel(-2, "female"));
|
|
|
+ assertEquals("曾孙", service.computeRelationshipLabel(3, "male"));
|
|
|
+ assertEquals("曾祖母", service.computeRelationshipLabel(-3, "female"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 超过三代_上下N代标签() {
|
|
|
+ assertEquals("下4代", service.computeRelationshipLabel(4, "male"));
|
|
|
+ assertEquals("上4代", service.computeRelationshipLabel(-4, "male"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 配偶关系不受辈分影响() {
|
|
|
+ assertEquals("丈夫", service.computeRelationshipLabel(0, "male", "spouse"));
|
|
|
+ assertEquals("妻子", service.computeRelationshipLabel(0, "female", "spouse"));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|