Skip to content

Commit

Permalink
Avoid hitting real API in test (#1047)
Browse files Browse the repository at this point in the history
  • Loading branch information
keithbro-imx committed Oct 23, 2023
1 parent c46c967 commit 5f70919
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 23 deletions.
61 changes: 40 additions & 21 deletions packages/immutablex_client/src/imx.test.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import { ImmutableXClient } from 'index';
import { Environment, ImmutableConfiguration } from '@imtbl/config';
import { Config } from '@imtbl/core-sdk';
import { AxiosRequestConfig } from 'axios';
import { ImxConfiguration, ImxModuleConfiguration, createImmutableXConfiguration } from './config';

describe('ImmutableXClient', () => {
it('should instantiate a SANDBOX ImmutableXClient', async () => {
it.skip('should instantiate a SANDBOX ImmutableXClient', async () => {
const imtblConfig = new ImmutableConfiguration({
environment: Environment.SANDBOX,
});

const { assetApi } = new ImmutableXClient({
baseConfig: imtblConfig,
});

const assetsResponse = await assetApi.listAssets();

expect(assetsResponse.status).toEqual(200);
Expand All @@ -34,17 +36,26 @@ describe('ImmutableXClient', () => {
});

it('should instantiate a ImmutableXClient with override and custom version', async () => {
const immutableXConfig = createImmutableXConfiguration({
basePath: 'https://api.sandbox.x.immutable.com',
chainID: 1,
coreContractAddress: '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9',
registrationContractAddress:
'0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c',
});

// eslint-disable-next-line @typescript-eslint/no-unused-vars
let axiosRequest: AxiosRequestConfig = {};
immutableXConfig.apiConfiguration.baseOptions.adapter = jest.fn().mockImplementation(
async (request: AxiosRequestConfig) => {
axiosRequest = request;
return { status: 200 };
},
);

const config: ImxModuleConfiguration = {
baseConfig: { environment: Environment.PRODUCTION },
overrides: {
immutableXConfig: createImmutableXConfiguration({
basePath: 'https://api.sandbox.x.immutable.com',
chainID: 1,
coreContractAddress: '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9',
registrationContractAddress:
'0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c',
}),
},
overrides: { immutableXConfig },
};
const { assetApi } = new ImmutableXClient(config);
const assetsResponse = await assetApi.listAssets();
Expand All @@ -55,25 +66,33 @@ describe('ImmutableXClient', () => {
it('should instantiate a ImmutableXClient with override and custom SDK version', async () => {
const sdkVersion = 'ts-immutable-sdk-0.0.1';

const immutableXConfig = Config.createConfig({
basePath: 'https://api.sandbox.x.immutable.com',
chainID: 1,
coreContractAddress: '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9',
registrationContractAddress:
'0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c',
sdkVersion,
});

let axiosRequest: AxiosRequestConfig = {};
immutableXConfig.apiConfiguration.baseOptions.adapter = jest.fn().mockImplementation(
async (request: AxiosRequestConfig) => {
axiosRequest = request;
return { status: 200 };
},
);

const config: ImxModuleConfiguration = {
baseConfig: { environment: Environment.PRODUCTION },
overrides: {
immutableXConfig: Config.createConfig({
basePath: 'https://api.sandbox.x.immutable.com',
chainID: 1,
coreContractAddress: '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9',
registrationContractAddress:
'0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c',
sdkVersion,
}),
},
overrides: { immutableXConfig },
};

const { assetApi } = new ImmutableXClient(config);
const assetsResponse = await assetApi.listAssets();

expect(assetsResponse.status).toEqual(200);
expect(assetsResponse.config.headers?.['x-sdk-version']).toEqual(
expect(axiosRequest.headers?.['x-sdk-version']).toEqual(
sdkVersion,
);
});
Expand Down
21 changes: 19 additions & 2 deletions packages/internal/generated-clients/src/imx-api-clents.test.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,43 @@
import { AxiosRequestConfig } from 'axios';
import { ImxApiClients } from './imx-api-clients';
import { imxApiConfig } from './config';

describe('ImxApiClients', () => {
it('should instantiate a SANDBOX ImxApiClients', async () => {
const config = imxApiConfig.getSandbox();

let axiosRequest: AxiosRequestConfig = {};
config.baseOptions.adapter = jest.fn().mockImplementation(async (request: AxiosRequestConfig) => {
axiosRequest = request;
return { status: 200 };
});

const { assetApi } = new ImxApiClients(config);
const assetsResponse = await assetApi.listAssets();

expect(assetsResponse.status).toEqual(200);
expect(assetsResponse.config.headers?.['x-sdk-version']).toContain(
expect(axiosRequest.headers?.['x-sdk-version']).toContain(
'ts-immutable-sdk',
);
expect(axiosRequest.url).toEqual('https://api.sandbox.x.immutable.com/v1/assets');
});

it('should instantiate a PRODUCTION ImxApiClients', async () => {
const config = imxApiConfig.getProduction();

let axiosRequest: AxiosRequestConfig = {};
config.baseOptions.adapter = jest.fn().mockImplementation(async (request: AxiosRequestConfig) => {
axiosRequest = request;
return { status: 200 };
});

const { assetApi } = new ImxApiClients(config);
const assetsResponse = await assetApi.listAssets();

expect(assetsResponse.status).toEqual(200);
expect(assetsResponse.config.headers?.['x-sdk-version']).toContain(
expect(axiosRequest.headers?.['x-sdk-version']).toContain(
'ts-immutable-sdk',
);
expect(axiosRequest.url).toEqual('https://api.x.immutable.com/v1/assets');
});
});

0 comments on commit 5f70919

Please sign in to comment.