Skip to content

Commit

Permalink
Update testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Ariflo committed Mar 5, 2024
1 parent 466d5b3 commit 8bafb75
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ export class ReactNativeWebViewController extends ViewController {
if (methodType && messageId) {
const timeout = setTimeout(() => {
this.messageTimeouts.delete(messageId);

throw createResponseTimeoutError(methodType, messageId);
}, 10000); // 10-second timeout

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import browserEnv from '@ikscodes/browser-env';
import { createModalNotReadyError } from '@magic-sdk/provider';
import { MagicSDKError, createModalNotReadyError, createResponseTimeoutError } from '@magic-sdk/provider';
import { createReactNativeWebViewController } from '../../factories';
import { reactNativeStyleSheetStub } from '../../mocks';

Expand Down Expand Up @@ -50,3 +50,26 @@ test('Process Typed Array in a Solana Request', async () => {
'http://example.com',
]);
});

// TODO: Figure out how to test this
test.skip('Throws RESPONSE_TIMEOUT error if response takes longer than 10 seconds', async () => {
jest.useFakeTimers();
const overlay = createReactNativeWebViewController('http://example.com');

const postStub = jest.fn();
overlay.webView = { postMessage: postStub };

// Setup expected payload and error
const payload = { method: 'testMethod', id: 123 };
const expectedError = createResponseTimeoutError(payload.method, payload.id);

const promise = await overlay._post({ payload });

// Fast-forward time by 10 seconds
jest.advanceTimersByTime(10000);

// Assert that the promise rejects with the expected error
expect(promise).rejects.toThrow(expectedError);

jest.useRealTimers();
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import browserEnv from '@ikscodes/browser-env';
import { createModalNotReadyError } from '@magic-sdk/provider';
import { MagicSDKError, createModalNotReadyError, createResponseTimeoutError } from '@magic-sdk/provider';
import { createReactNativeWebViewController } from '../../factories';
import { reactNativeStyleSheetStub } from '../../mocks';

Expand Down Expand Up @@ -50,3 +50,26 @@ test('Process Typed Array in a Solana Request', async () => {
'http://example.com',
]);
});

// TODO: Figure out how to test this
test.skip('Throws RESPONSE_TIMEOUT error if response takes longer than 10 seconds', async () => {
jest.useFakeTimers();
const overlay = createReactNativeWebViewController('http://example.com');

const postStub = jest.fn();
overlay.webView = { postMessage: postStub };

// Setup expected payload and error
const payload = { method: 'testMethod', id: 123 };
const expectedError = createResponseTimeoutError(payload.method, payload.id);

const promise = await overlay._post({ payload });

// Fast-forward time by 10 seconds
jest.advanceTimersByTime(10000);

// Assert that the promise rejects with the expected error
expect(promise).rejects.toThrow(expectedError);

jest.useRealTimers();
});

0 comments on commit 8bafb75

Please sign in to comment.