From c97d90964f372b0e9df28a7a4b20e935584cb96e Mon Sep 17 00:00:00 2001 From: Opender Singh Date: Thu, 3 Jun 2021 15:10:36 +1200 Subject: [PATCH] deterministic id --- .../app/ui/hooks/__tests__/space.test.ts | 24 +++++++++++++++---- packages/insomnia-app/app/ui/hooks/space.ts | 5 +++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/insomnia-app/app/ui/hooks/__tests__/space.test.ts b/packages/insomnia-app/app/ui/hooks/__tests__/space.test.ts index 972e966317b..1615cc3c63e 100644 --- a/packages/insomnia-app/app/ui/hooks/__tests__/space.test.ts +++ b/packages/insomnia-app/app/ui/hooks/__tests__/space.test.ts @@ -41,7 +41,7 @@ describe('useRemoteSpaces', () => { const vcs1 = new VCS(new MemoryDriver()); const vcs2 = new VCS(new MemoryDriver()); const team1 = { id: 'id1', name: 'team1' }; - const team2 = { id: 'id1', name: 'team2' }; + const team2 = { id: 'id2', name: 'team2' }; (vcs1.teams as jest.MockedFunction).mockResolvedValue([team1]); (vcs2.teams as jest.MockedFunction).mockResolvedValue([team2]); @@ -90,11 +90,27 @@ describe('useRemoteSpaces', () => { expect(vcs.teams).toHaveBeenCalledTimes(1); await expect(models.space.all()).resolves.toHaveLength(0); - (vcs.teams as jest.MockedFunction).mockResolvedValue([{ id: 'id1', name: 'name' }, { id: 'id2', name: 'name' }]); + const team1 = { id: 'id1', name: 'team1' }; + const team2 = { id: 'id2', name: 'team2' }; + (vcs.teams as jest.MockedFunction).mockResolvedValue([team1, team2]); + // Refresh multiple times + await act(() => result.current.refresh()); await act(() => result.current.refresh()); - expect(vcs.teams).toHaveBeenCalledTimes(2); - await expect(models.space.all()).resolves.toHaveLength(2); + expect(vcs.teams).toHaveBeenCalledTimes(3); + + const allSpaces = await models.space.all(); + expect(allSpaces).toHaveLength(2); + expect(allSpaces).toEqual(expect.arrayContaining([ + expect.objectContaining>({ + remoteId: team1.id, + name: team1.name, + }), + expect.objectContaining>({ + remoteId: team2.id, + name: team2.name, + }), + ])); }); }); diff --git a/packages/insomnia-app/app/ui/hooks/space.ts b/packages/insomnia-app/app/ui/hooks/space.ts index 900ac3f969b..1e0fb033ec7 100644 --- a/packages/insomnia-app/app/ui/hooks/space.ts +++ b/packages/insomnia-app/app/ui/hooks/space.ts @@ -14,7 +14,10 @@ export const useRemoteSpaces = (vcs?: VCS) => { setLoading(true); const teams = await vcs.teams(); - const spaces = await Promise.all(teams.map(team => models.initModel(models.space.type, { remoteId: team.id, name: team.name }))); + const spaces = await Promise.all(teams.map(team => models.initModel( + models.space.type, + { _id: `${models.space.prefix}_${team.id}`, remoteId: team.id, name: team.name }, + ))); await database.batchModifyDocs({ upsert: spaces }); setLoading(false);