feat: use pager-based root tab navigation
This commit is contained in:
@@ -13,6 +13,7 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.Shadows;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@@ -53,9 +54,11 @@ public class MainActivityConversationSearchTest {
|
||||
.put("latestReplyLabel", "09:40")));
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
ReflectionHelpers.callInstanceMethod(activity, "renderConversationsRoot");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
|
||||
LinearLayout content = activity.findViewById(R.id.screen_content);
|
||||
LinearLayout content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
assertTrue(content.getChildAt(0) instanceof EditText);
|
||||
EditText input = (EditText) content.getChildAt(0);
|
||||
assertEquals("搜索项目或线程", String.valueOf(input.getHint()));
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.Shadows;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@@ -25,23 +26,24 @@ public class MainActivityConversationSelectionTest {
|
||||
MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get();
|
||||
ReflectionHelpers.setField(activity, "conversationsData", buildConversations());
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "enterConversationSelectionMode");
|
||||
assertTrue(ReflectionHelpers.getField(activity, "conversationSelectionMode"));
|
||||
|
||||
LinearLayout content = activity.findViewById(R.id.screen_content);
|
||||
LinearLayout content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
assertTrue(viewTreeContainsText(content, "发起群聊"));
|
||||
assertTrue(viewTreeContainsText(content, "至少选择 2 个线程"));
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "toggleConversationSelection",
|
||||
ReflectionHelpers.ClassParameter.from(String.class, "thread-1"));
|
||||
content = activity.findViewById(R.id.screen_content);
|
||||
content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
assertTrue(viewTreeContainsText(content, "已选 1 个线程"));
|
||||
assertTrue(viewTreeContainsText(content, "至少选择 2 个线程"));
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "toggleConversationSelection",
|
||||
ReflectionHelpers.ClassParameter.from(String.class, "thread-2"));
|
||||
content = activity.findViewById(R.id.screen_content);
|
||||
content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
assertTrue(viewTreeContainsText(content, "已选 2 个线程"));
|
||||
assertFalse(viewTreeContainsText(content, "至少选择 2 个线程"));
|
||||
}
|
||||
@@ -51,9 +53,10 @@ public class MainActivityConversationSelectionTest {
|
||||
MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get();
|
||||
ReflectionHelpers.setField(activity, "conversationsData", buildConversations());
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
ReflectionHelpers.callInstanceMethod(activity, "enterConversationSelectionMode");
|
||||
|
||||
LinearLayout content = activity.findViewById(R.id.screen_content);
|
||||
LinearLayout content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
View row = content.getChildAt(3);
|
||||
assertTrue("多选模式应显示单选圆点", viewTreeContainsContentDescription(row, "未选中会话"));
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.Shadows;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@@ -40,9 +41,11 @@ public class MainActivityPinnedConversationsTest {
|
||||
.put("latestReplyLabel", "09:41")));
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
ReflectionHelpers.callInstanceMethod(activity, "renderConversationsRoot");
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
|
||||
LinearLayout content = activity.findViewById(R.id.screen_content);
|
||||
LinearLayout content = ReflectionHelpers.getField(activity, "screenContent");
|
||||
assertTrue(viewTreeContainsText(content, "置顶会话"));
|
||||
assertTrue(viewTreeContainsText(content, "收起"));
|
||||
assertTrue(viewTreeContainsText(content, "主 Agent"));
|
||||
|
||||
@@ -1,32 +1,51 @@
|
||||
package com.hyzq.boss;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.Shadows;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(sdk = 34)
|
||||
public class MainActivitySwipeNavigationTest {
|
||||
@Test
|
||||
public void horizontalSwipeMovesBetweenRootTabs() {
|
||||
public void selectingTabsUpdatesPagerAndActiveTab() {
|
||||
MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get();
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
ViewPager2 pager = activity.findViewById(R.id.root_pager);
|
||||
assertNotNull(pager);
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "handleHorizontalPageSwipe",
|
||||
ReflectionHelpers.ClassParameter.from(int.class, 1));
|
||||
activity.findViewById(R.id.tab_devices).performClick();
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
assertEquals(1, pager.getCurrentItem());
|
||||
assertEquals("devices", ReflectionHelpers.getField(activity, "activeTab"));
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "handleHorizontalPageSwipe",
|
||||
ReflectionHelpers.ClassParameter.from(int.class, 1));
|
||||
activity.findViewById(R.id.tab_me).performClick();
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
assertEquals(2, pager.getCurrentItem());
|
||||
assertEquals("me", ReflectionHelpers.getField(activity, "activeTab"));
|
||||
}
|
||||
|
||||
ReflectionHelpers.callInstanceMethod(activity, "handleHorizontalPageSwipe",
|
||||
ReflectionHelpers.ClassParameter.from(int.class, -1));
|
||||
@Test
|
||||
public void pagerSelectionUpdatesActiveTab() {
|
||||
MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get();
|
||||
ReflectionHelpers.callInstanceMethod(activity, "showContent");
|
||||
ViewPager2 pager = activity.findViewById(R.id.root_pager);
|
||||
assertNotNull(pager);
|
||||
|
||||
pager.setCurrentItem(1, false);
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
assertEquals("devices", ReflectionHelpers.getField(activity, "activeTab"));
|
||||
|
||||
pager.setCurrentItem(2, false);
|
||||
Shadows.shadowOf(activity.getMainLooper()).idle();
|
||||
assertEquals("me", ReflectionHelpers.getField(activity, "activeTab"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user