From 38e0ed20313accb81d251d43285ae05c0e58437f Mon Sep 17 00:00:00 2001 From: Maycon Date: Mon, 28 Oct 2024 12:59:41 -0300 Subject: [PATCH 1/2] set network id in ecosystem resolution --- packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts index c1b70976..ff7014b2 100644 --- a/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts +++ b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts @@ -3,6 +3,7 @@ import {getEcosystems} from '@docknetwork/wallet-sdk-core/src/ecosystem-tools'; import {hexToString} from '@polkadot/util'; import axios from 'axios'; import { captureException } from '@docknetwork/wallet-sdk-core/src/helpers'; +import { getWallet } from '../wallet'; const getMetadata = async govFramework => { const metadataURL = await hexToString(govFramework); @@ -41,7 +42,7 @@ export function useEcosystems({issuer, verifier, schemaId}) { if(isLoading) return; setIsLoading(true); setIsError(false); - getEcosystems({issuerDID: issuer, verifierDID: verifier, schemaId: schemaId}) + getEcosystems({issuerDID: issuer, verifierDID: verifier, schemaId: schemaId, networkId: getWallet().getNetworkId()}) .then(async result => { try { const ecosystemData = await formatEcosystemData(result); From 25e45bcc95a8a59fef3e6b85dab3248800ac66ad Mon Sep 17 00:00:00 2001 From: Maycon Date: Tue, 29 Oct 2024 13:05:22 -0300 Subject: [PATCH 2/2] unit tests for ecosystem hooks --- .../ecosystem-tools/ecosystemHooks.test.js | 74 +++++++++++++++++++ .../lib/ecosystem-tools/ecosystemHooks.ts | 4 +- 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 packages/react-native/lib/ecosystem-tools/ecosystemHooks.test.js diff --git a/packages/react-native/lib/ecosystem-tools/ecosystemHooks.test.js b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.test.js new file mode 100644 index 00000000..2814791d --- /dev/null +++ b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.test.js @@ -0,0 +1,74 @@ +import { renderHook } from '@testing-library/react-hooks'; +import { useEcosystems } from './ecosystemHooks'; +import { getEcosystems } from '@docknetwork/wallet-sdk-core/src/ecosystem-tools'; +import { getWallet } from '../wallet'; +import { captureException } from '@docknetwork/wallet-sdk-core/src/helpers'; + +jest.mock('@docknetwork/wallet-sdk-core/src/ecosystem-tools', () => ({ + getEcosystems: jest.fn(), +})); + +jest.mock('../wallet', () => ({ + getWallet: jest.fn(), +})); + +jest.mock('@docknetwork/wallet-sdk-core/src/helpers', () => ({ + captureException: jest.fn(), +})); + +const mockEcosystems = { + eco1: { govFramework: 'hex-url-1' }, + eco2: { govFramework: 'hex-url-2' }, +}; + +const mockWallet = { + getNetworkId: jest.fn(() => 'test-network'), +}; + +getWallet.mockReturnValue(mockWallet); + +describe('useEcosystems', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should fetch and format ecosystem data', async () => { + getEcosystems.mockResolvedValue(mockEcosystems); + + const { result, waitForNextUpdate } = renderHook(() => + useEcosystems({ issuer: 'issuerId', verifier: 'verifierId', schemaId: 'schemaId' }) + ); + + expect(result.current.isLoading).toBe(true); + + await waitForNextUpdate(); + + expect(getEcosystems).toHaveBeenCalledWith({ + issuerDID: 'issuerId', + verifierDID: 'verifierId', + schemaId: 'schemaId', + networkId: 'test-network', + }); + + expect(result.current.isLoading).toBe(false); + expect(result.current.isError).toBe(false); + expect(result.current.ecosystems).toEqual(expect.any(Array)); + }); + + it('should handle error while fetching ecosystems', async () => { + const error = new Error('Error fetching ecosystems'); + getEcosystems.mockRejectedValue(error); + + const { result, waitForNextUpdate } = renderHook(() => + useEcosystems({ issuer: 'issuerId', verifier: 'verifierId', schemaId: 'schemaId' }) + ); + + expect(result.current.isLoading).toBe(true); + + await waitForNextUpdate(); + + expect(result.current.isLoading).toBe(false); + expect(result.current.isError).toBe(true); + expect(captureException).toHaveBeenCalledWith(error); + }); +}); diff --git a/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts index ff7014b2..5954c622 100644 --- a/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts +++ b/packages/react-native/lib/ecosystem-tools/ecosystemHooks.ts @@ -19,10 +19,10 @@ const getMetadata = async govFramework => { const formatEcosystemData = async ecosystems => { const formattedEcosystems = []; - const ecosystemsList = Object.entries(ecosystems); + const ecosystemsList: any = Object.entries(ecosystems); for (let i = 0; i < ecosystemsList.length; i++) { - let ecosystemData = {}; + let ecosystemData: any = {}; ecosystemData.trustRegistryId = ecosystemsList[i][0]; ecosystemData = {...ecosystemData, ...ecosystemsList[i][1]};