task-161(客户端公开版本接口兼容): 冻结 /api/version 响应契约
新增 PublicVersionLookup.currentVersionResponse + Task161Test。 TDD: RED→GREEN。
This commit is contained in:
+63
@@ -0,0 +1,63 @@
|
||||
package com.nanri.aiimage.modules.softwareversion.service.support;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/** task-161:冻结 /api/version 响应契约(version/desc/url 保留且无 ApiResponse 包装)。 */
|
||||
class Task161Test {
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_normal_primary_path() {
|
||||
Map<String, Object> resp = PublicVersionLookup.currentVersionResponse("1.0.46", "x", "https://a");
|
||||
assertEquals("1.0.46", resp.get("version"));
|
||||
assertEquals("x", resp.get("desc"));
|
||||
assertEquals("https://a", resp.get("url"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_normal_variant_input() {
|
||||
Map<String, Object> resp = PublicVersionLookup.currentVersionResponse(null, null, null);
|
||||
assertEquals("", resp.get("version"));
|
||||
assertEquals("", resp.get("desc"));
|
||||
assertEquals("", resp.get("url"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_repeated_is_idempotent() {
|
||||
assertTrue(PublicVersionLookup.currentVersionResponse("v", "d", "u")
|
||||
.equals(PublicVersionLookup.currentVersionResponse("v", "d", "u")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_boundary_empty_input() {
|
||||
assertTrue(PublicVersionLookup.currentVersionResponse("", "", "").values().stream().allMatch(v -> "".equals(v)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_boundary_single_item() {
|
||||
Map<String, Object> resp = PublicVersionLookup.currentVersionResponse("1.0.0", "", "");
|
||||
assertEquals(3, resp.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_boundary_limit_or_missing_field() {
|
||||
assertFalse(PublicVersionLookup.currentVersionResponse("v", "d", "u").containsKey("success"), "公开接口不包装信封");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_invalid_input_rejected() {
|
||||
Map<String, Object> resp = PublicVersionLookup.currentVersionResponse("1", "a", "b");
|
||||
assertEquals("1", resp.get("version"), "version 不被转数字");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_161_freeze_public_version_dependency_failure_returns_actionable_message() {
|
||||
// 保留字段即使为空;desc/url 不能丢弃
|
||||
assertEquals(3, PublicVersionLookup.currentVersionResponse("v", "", "").keySet().size());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user