From 1e22aa86246743ff0fa14c86701fb6db3161ae23 Mon Sep 17 00:00:00 2001 From: Johannes Klein <17345891+jtklein@users.noreply.github.com> Date: Fri, 10 Jul 2026 21:24:57 +0200 Subject: [PATCH] It prunes stale joined projects after a successful sync --- .../sharedHelpers/syncJoinedProjects.test.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/unit/sharedHelpers/syncJoinedProjects.test.js b/tests/unit/sharedHelpers/syncJoinedProjects.test.js index 642c53cd7..376785dcf 100644 --- a/tests/unit/sharedHelpers/syncJoinedProjects.test.js +++ b/tests/unit/sharedHelpers/syncJoinedProjects.test.js @@ -1,4 +1,5 @@ import fetchUserProjects from "api/usersTyped"; +import Project from "realmModels/Project"; import safeRealmWrite from "sharedHelpers/safeRealmWrite"; import syncJoinedProjects from "sharedHelpers/syncJoinedProjects"; import factory from "tests/factory"; @@ -41,6 +42,26 @@ describe( "syncJoinedProjects", ( ) => { expect( global.realm.objects( "Project" ) ).toHaveLength( 2 ); } ); + it( "prunes stale joined projects after a successful sync", async () => { + // Local + const staleProject = factory( "RemoteProject", { id: 9999 } ); + Project.upsertRemoteProjects( [staleProject], global.realm ); + // API + const freshProject = factory( "RemoteProject", { id: 1 } ); + fetchUserProjects.mockResolvedValue( + makeUserProjectsResponse( [freshProject] ), + ); + + await syncJoinedProjects( global.realm, currentUserId ); + + expect( + global.realm.objectForPrimaryKey( "Project", staleProject.id ), + ).toBeNull(); + expect( + global.realm.objectForPrimaryKey( "Project", freshProject.id ), + ).not.toBeNull(); + } ); + it( "no-ops when currentUserId is missing", async () => { await syncJoinedProjects( global.realm, undefined );