From aad955c85e33a53c9c7590ef2e55f98e35f95232 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Mon, 29 Jun 2026 16:16:47 -0700 Subject: [PATCH] test(expo): Isolate native token bootstrap in sync tests --- .changeset/stable-expo-native-sync-tests.md | 2 ++ .../ClerkProvider.nativeClientSync.test.tsx | 18 +++--------------- 2 files changed, 5 insertions(+), 15 deletions(-) create mode 100644 .changeset/stable-expo-native-sync-tests.md diff --git a/.changeset/stable-expo-native-sync-tests.md b/.changeset/stable-expo-native-sync-tests.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/stable-expo-native-sync-tests.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/expo/src/provider/__tests__/ClerkProvider.nativeClientSync.test.tsx b/packages/expo/src/provider/__tests__/ClerkProvider.nativeClientSync.test.tsx index 02654f3d4b4..f72e96d405a 100644 --- a/packages/expo/src/provider/__tests__/ClerkProvider.nativeClientSync.test.tsx +++ b/packages/expo/src/provider/__tests__/ClerkProvider.nativeClientSync.test.tsx @@ -123,7 +123,7 @@ describe('ClerkProvider native client sync', () => { vi.clearAllMocks(); mocks.nativeClientEvent = null; mocks.configure.mockResolvedValue(undefined); - mocks.getClientToken.mockResolvedValue('native-client-token'); + mocks.getClientToken.mockResolvedValue(null); mocks.syncClientStateFromJs.mockResolvedValue(undefined); mocks.tokenCache.getToken.mockResolvedValue('client-token'); mocks.tokenCache.saveToken.mockResolvedValue(undefined); @@ -184,7 +184,6 @@ describe('ClerkProvider native client sync', () => { test('reloads JS resources after native emits a device token change', async () => { mocks.tokenCache.getToken.mockResolvedValue(null); - mocks.getClientToken.mockResolvedValue(null); const { rerender } = render( { }); test('reloads JS resources after native clears the device token', async () => { + mocks.tokenCache.getToken.mockResolvedValue(null); + const { rerender } = render( { await waitFor(() => { expect(mocks.configure).toHaveBeenCalled(); }); - await waitFor(() => { - expect(mocks.clerkInstance.__internal_reloadInitialResources).toHaveBeenCalled(); - }); mocks.clerkInstance.__internal_reloadInitialResources.mockClear(); mocks.tokenCache.saveToken.mockClear(); @@ -264,8 +262,6 @@ describe('ClerkProvider native client sync', () => { }); test('reloads JS resources after a native client-only change without rewriting the token cache', async () => { - mocks.getClientToken.mockResolvedValue(null); - const { rerender } = render( { }); test('does not bounce a JS client listener event while applying a native client change', async () => { - mocks.getClientToken.mockResolvedValue(null); - const { rerender } = render( { test('keeps token cache notifications suppressed across overlapping native token writes', async () => { mocks.tokenCache.getToken.mockResolvedValue(null); - mocks.getClientToken.mockResolvedValue(null); const firstSave = deferred(); const secondSave = deferred(); @@ -448,7 +441,6 @@ describe('ClerkProvider native client sync', () => { fetch: vi.fn().mockResolvedValue(refreshedClient), }; mocks.clerkInstance.session = activeSession; - mocks.getClientToken.mockResolvedValue(null); const { rerender } = render( { mocks.clerkInstance.session = session; return Promise.resolve(); }); - mocks.getClientToken.mockResolvedValue(null); const { rerender } = render( { }), }; mocks.clerkInstance.session = removedSession; - mocks.getClientToken.mockResolvedValue(null); const { rerender } = render( { mocks.clerkInstance.session = session; return Promise.resolve(); }); - mocks.getClientToken.mockResolvedValue(null); render( { test('ignores native client events that echo a JS-originated sync', async () => { mocks.tokenCache.getToken.mockResolvedValue(null); - mocks.getClientToken.mockResolvedValue(null); const { rerender } = render(