From 4bedf75dc215b8e510cecdb2bb1a279554c4c3e6 Mon Sep 17 00:00:00 2001 From: kris Date: Thu, 16 Apr 2026 06:02:27 +0800 Subject: [PATCH] test: cover master agent evolution entry wiring --- .../MainActivityMeEntryNavigationTest.java | 47 +++++++++++++++++++ tests/config-pages-realtime-refresh.test.ts | 18 +++++++ 2 files changed, 65 insertions(+) create mode 100644 android/app/src/test/java/com/hyzq/boss/MainActivityMeEntryNavigationTest.java diff --git a/android/app/src/test/java/com/hyzq/boss/MainActivityMeEntryNavigationTest.java b/android/app/src/test/java/com/hyzq/boss/MainActivityMeEntryNavigationTest.java new file mode 100644 index 0000000..07688ad --- /dev/null +++ b/android/app/src/test/java/com/hyzq/boss/MainActivityMeEntryNavigationTest.java @@ -0,0 +1,47 @@ +package com.hyzq.boss; + +import static org.junit.Assert.assertEquals; + +import android.content.Intent; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.Shadows; +import org.robolectric.annotation.Config; +import org.robolectric.util.ReflectionHelpers; + +@RunWith(RobolectricTestRunner.class) +@Config(sdk = 34) +public class MainActivityMeEntryNavigationTest { + @Test + public void masterAgentPromptMeEntryOpensPromptActivityForMasterAgent() { + MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get(); + + ReflectionHelpers.callInstanceMethod( + activity, + "openMeEntry", + ReflectionHelpers.ClassParameter.from(String.class, "master_agent_prompt") + ); + + Intent started = Shadows.shadowOf(activity).getNextStartedActivity(); + assertEquals(MasterAgentPromptActivity.class.getName(), started.getComponent().getClassName()); + assertEquals("master-agent", started.getStringExtra(MasterAgentPromptActivity.EXTRA_PROJECT_ID)); + assertEquals("主 Agent", started.getStringExtra(MasterAgentPromptActivity.EXTRA_PROJECT_NAME)); + } + + @Test + public void masterAgentEvolutionMeEntryOpensEvolutionActivity() { + MainActivity activity = Robolectric.buildActivity(MainActivity.class).setup().get(); + + ReflectionHelpers.callInstanceMethod( + activity, + "openMeEntry", + ReflectionHelpers.ClassParameter.from(String.class, "master_agent_evolution") + ); + + Intent started = Shadows.shadowOf(activity).getNextStartedActivity(); + assertEquals(MasterAgentEvolutionActivity.class.getName(), started.getComponent().getClassName()); + } +} diff --git a/tests/config-pages-realtime-refresh.test.ts b/tests/config-pages-realtime-refresh.test.ts index e118285..f6184d1 100644 --- a/tests/config-pages-realtime-refresh.test.ts +++ b/tests/config-pages-realtime-refresh.test.ts @@ -52,3 +52,21 @@ test("me page exposes master agent evolution entry", async () => { assert.match(source, /href="\/me\/master-agent\/evolution"/, "expected me page to link evolution page"); assert.match(source, /title="主 Agent 自动进化"/, "expected me page to show evolution menu title"); }); + +test("master agent evolution page renders admin-aware dashboard shell", async () => { + const pageSource = await readSource("src/app/me/master-agent/evolution/page.tsx"); + const clientSource = await readSource("src/components/master-agent-evolution-client.tsx"); + + assert.match(pageSource, /getMasterAgentEvolutionDashboard/, "expected page to load evolution dashboard server-side"); + assert.match(pageSource, /session\.role === "highest_admin"/, "expected page to gate admin actions by role"); + assert.match(pageSource, /