fix: compact chat subpage typography
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.hyzq.boss;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -38,4 +40,28 @@ public class BossUiMessageBubbleTest {
|
||||
assertTrue(bodyView.getText().toString().contains("重点"));
|
||||
assertTrue(bodyView.getText().toString().contains("代码"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildMessageBubble_usesWechatCompactTextMetrics() {
|
||||
Context context = RuntimeEnvironment.getApplication();
|
||||
|
||||
LinearLayout wrapper = BossUi.buildMessageBubble(
|
||||
context,
|
||||
"线程",
|
||||
"这是一条普通对话内容",
|
||||
"10:26",
|
||||
false,
|
||||
"结果"
|
||||
);
|
||||
|
||||
TextView metaView = (TextView) wrapper.getChildAt(0);
|
||||
LinearLayout bubble = (LinearLayout) wrapper.getChildAt(1);
|
||||
TextView kindView = (TextView) bubble.getChildAt(0);
|
||||
TextView bodyView = (TextView) bubble.getChildAt(1);
|
||||
|
||||
assertFalse("消息时间/发送人不应保留默认字体留白", metaView.getIncludeFontPadding());
|
||||
assertFalse("消息类型标签不应保留默认字体留白", kindView.getIncludeFontPadding());
|
||||
assertFalse("消息正文不应保留默认字体留白", bodyView.getIncludeFontPadding());
|
||||
assertEquals("消息正文应对标微信聊天正文", 14f, bodyView.getTextSize() / context.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.content.SharedPreferences;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -47,6 +48,49 @@ import java.util.function.BooleanSupplier;
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(sdk = 34)
|
||||
public class ProjectDetailActivityUiTest {
|
||||
@Test
|
||||
public void chatSubpageTypographyUsesWechatCompactSizing() {
|
||||
Intent intent = new Intent()
|
||||
.putExtra(ProjectDetailActivity.EXTRA_PROJECT_ID, "project-1")
|
||||
.putExtra(ProjectDetailActivity.EXTRA_PROJECT_NAME, "北区试产线回归");
|
||||
TestProjectDetailActivity activity = Robolectric
|
||||
.buildActivity(TestProjectDetailActivity.class, intent)
|
||||
.setup()
|
||||
.get();
|
||||
|
||||
LinearLayout topBar = activity.findViewById(R.id.screen_top_bar);
|
||||
TextView title = activity.findViewById(R.id.screen_title);
|
||||
TextView subtitle = activity.findViewById(R.id.screen_subtitle);
|
||||
LinearLayout quickActions = activity.findViewById(R.id.project_chat_quick_actions);
|
||||
ImageButton attachButton = activity.findViewById(R.id.project_chat_attach);
|
||||
EditText input = activity.findViewById(R.id.project_chat_input);
|
||||
Button sendButton = activity.findViewById(R.id.project_chat_send);
|
||||
ReflectionHelpers.callInstanceMethod(activity, "renderQuickActions");
|
||||
|
||||
assertEquals("聊天子页面顶部栏左侧留白应和首页一致", BossUi.dp(activity, 16), topBar.getPaddingLeft());
|
||||
assertFalse("聊天子页面标题不应保留 TextView 默认额外字体留白", title.getIncludeFontPadding());
|
||||
assertFalse("聊天子页面副标题不应保留 TextView 默认额外字体留白", subtitle.getIncludeFontPadding());
|
||||
assertEquals("聊天子页面标题不应换行撑高顶部栏", 1, title.getMaxLines());
|
||||
assertEquals("聊天子页面副标题不应换行撑高顶部栏", 1, subtitle.getMaxLines());
|
||||
assertEquals("聊天子页面副标题过长时应单行省略", TextUtils.TruncateAt.END, subtitle.getEllipsize());
|
||||
assertEquals("聊天子页面标题应对标微信页面标题", 18f, title.getTextSize() / activity.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
assertEquals("聊天子页面副标题应对标微信辅助说明", 11f, subtitle.getTextSize() / activity.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
|
||||
assertTrue("聊天子页面应渲染项目目标/版本记录按钮", quickActions.getChildCount() >= 2);
|
||||
Button goalsButton = (Button) quickActions.getChildAt(0);
|
||||
Button versionsButton = (Button) quickActions.getChildAt(1);
|
||||
assertEquals("聊天子页面快捷按钮高度不应继续使用旧的大按钮", BossUi.dp(activity, 36), goalsButton.getLayoutParams().height);
|
||||
assertEquals("聊天子页面快捷按钮文字应对标微信按钮字号", 13f, goalsButton.getTextSize() / activity.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
assertEquals("聊天子页面快捷按钮高度应统一", BossUi.dp(activity, 36), versionsButton.getLayoutParams().height);
|
||||
|
||||
assertEquals("聊天输入附件按钮不应继续使用 48dp 大图标", BossUi.dp(activity, 40), attachButton.getLayoutParams().width);
|
||||
assertEquals("聊天输入附件按钮不应继续使用 48dp 大图标", BossUi.dp(activity, 40), attachButton.getLayoutParams().height);
|
||||
assertTrue("聊天输入框最小高度不应继续撑大底部输入区", input.getMinHeight() <= BossUi.dp(activity, 40));
|
||||
assertEquals("聊天输入框字号应和微信输入区一致", 14f, input.getTextSize() / activity.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
assertEquals("发送按钮高度应和输入框一致", BossUi.dp(activity, 40), sendButton.getLayoutParams().height);
|
||||
assertEquals("发送按钮字号应对标微信按钮字号", 13f, sendButton.getTextSize() / activity.getResources().getDisplayMetrics().scaledDensity, 0.5f);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void typingAtInComposerShowsAgentMentionSuggestions() {
|
||||
Intent intent = new Intent()
|
||||
@@ -486,8 +530,8 @@ public class ProjectDetailActivityUiTest {
|
||||
|
||||
assertTrue(attachView instanceof ImageButton);
|
||||
ViewGroup.LayoutParams params = attachView.getLayoutParams();
|
||||
assertTrue(params.width >= BossUi.dp(activity, 46));
|
||||
assertTrue(params.height >= BossUi.dp(activity, 46));
|
||||
assertEquals(BossUi.dp(activity, 40), params.width);
|
||||
assertEquals(BossUi.dp(activity, 40), params.height);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -517,8 +561,8 @@ public class ProjectDetailActivityUiTest {
|
||||
assertTrue((params.gravity & Gravity.LEFT) == Gravity.LEFT || (params.gravity & Gravity.START) == Gravity.START);
|
||||
assertEquals(BossUi.dp(activity, 12), params.leftMargin);
|
||||
assertTrue(params.bottomMargin >= BossUi.dp(activity, 12));
|
||||
assertEquals(BossUi.dp(activity, 48), params.width);
|
||||
assertEquals(BossUi.dp(activity, 48), params.height);
|
||||
assertEquals(BossUi.dp(activity, 44), params.width);
|
||||
assertEquals(BossUi.dp(activity, 44), params.height);
|
||||
|
||||
int baselineScrollCount = activity.scrollChatToBottomCount;
|
||||
shortcutView.performClick();
|
||||
|
||||
Reference in New Issue
Block a user