From 70ea0911ce7519ca802266078624e9fed3559a2c Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期五, 18 九月 2026 14:05:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/main'

---
 talent-card-server/src/test/java/com/talentcard/server/business/portal/PortalServiceTests.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/portal/PortalServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/portal/PortalServiceTests.java
index 06e3478..8e5c8e5 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/portal/PortalServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/portal/PortalServiceTests.java
@@ -4,6 +4,7 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.lang.reflect.Method;
@@ -14,6 +15,7 @@
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.ArgumentCaptor;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.springframework.jdbc.core.JdbcTemplate;
 
@@ -191,4 +193,31 @@
 		assertThat(method.invoke(service, plain, "卓越人才卡", "LOCAL", true)).isNotNull();
 		assertThat(method.invoke(service, plain, "卓越人才卡", "OUTSIDE", true)).isNotNull();
 	}
+
+	@Test
+	void newsListSortsPinnedArticlesByModifiedTime() {
+		when(jdbc.queryForObject(anyString(), eq(Long.class), any(Object[].class))).thenReturn(0L);
+		when(jdbc.queryForList(anyString(), any(Object[].class))).thenReturn(List.of());
+
+		service.news(1, 10);
+
+		ArgumentCaptor<String> sql = ArgumentCaptor.forClass(String.class);
+		verify(jdbc).queryForList(sql.capture(), any(Object[].class));
+		assertThat(sql.getValue())
+				.contains("from news_article")
+				.contains("is_top desc")
+				.contains("case when is_top = 1 then updated_at end desc");
+	}
+
+	@Test
+	void premiumListTagComesFromMerchantConfigurationOnly() {
+		// 商家权益里配了标签 → 用它;没配(新商家)→ 留空,不再兜底"人才专享"。
+		assertThat(service.configuredMerchantTag(
+				"[{\"level\":\"卓越人才卡\",\"enabled\":true,\"tag\":\"卓越人才卡\"}]", ""))
+				.isEqualTo("卓越人才卡");
+		assertThat(service.configuredMerchantTag("", "")).isEmpty();
+		assertThat(service.configuredMerchantTag("[]", "")).isEmpty();
+		// 权益里没写标签时退回商家服务标签。
+		assertThat(service.configuredMerchantTag("[{\"level\":\"卓越人才卡\",\"enabled\":true}]", "专属服务")).isEqualTo("专属服务");
+	}
 }

--
Gitblit v1.7.1