@safe-global/safe-modules-deployments
Version:
Collection of Safe modules contract deployments
81 lines (63 loc) • 2.59 kB
text/typescript
import { findDeployment, applyFilterDefaults } from '../utils';
import { Deployment } from '../types';
const DEPLOYMENT_V1: Deployment = {
version: '1.0.0',
released: true,
contractName: 'TestContract',
abi: [],
networkAddresses: { '1': '0xAAAA', '137': '0xBBBB' },
};
const DEPLOYMENT_V2: Deployment = {
version: '2.0.0',
released: false,
contractName: 'TestContract',
abi: [],
networkAddresses: { '1': '0xCCCC' },
};
const DEPLOYMENTS = [DEPLOYMENT_V2, DEPLOYMENT_V1];
describe('applyFilterDefaults', () => {
it('returns { released: true } when called with no argument', () => {
expect(applyFilterDefaults()).toEqual({ released: true });
});
it('returns { released: true } when called with undefined', () => {
expect(applyFilterDefaults(undefined)).toEqual({ released: true });
});
it('returns the filter as-is when an explicit filter is provided', () => {
expect(applyFilterDefaults({ version: '1.0.0' })).toEqual({ version: '1.0.0' });
});
it('preserves released: false when explicitly set', () => {
expect(applyFilterDefaults({ released: false })).toEqual({ released: false });
});
});
describe('findDeployment', () => {
it('returns the first (latest) deployment with no filter', () => {
expect(findDeployment({}, DEPLOYMENTS)).toBe(DEPLOYMENT_V2);
});
it('filters by version', () => {
expect(findDeployment({ version: '1.0.0' }, DEPLOYMENTS)).toBe(DEPLOYMENT_V1);
});
it('returns undefined for an unknown version', () => {
expect(findDeployment({ version: '9.9.9' }, DEPLOYMENTS)).toBeUndefined();
});
it('filters by released: true', () => {
expect(findDeployment({ released: true }, DEPLOYMENTS)).toBe(DEPLOYMENT_V1);
});
it('filters by released: false', () => {
expect(findDeployment({ released: false }, DEPLOYMENTS)).toBe(DEPLOYMENT_V2);
});
it('filters by network', () => {
expect(findDeployment({ network: '137' }, DEPLOYMENTS)).toBe(DEPLOYMENT_V1);
});
it('returns undefined for an unknown network', () => {
expect(findDeployment({ network: '9999' }, DEPLOYMENTS)).toBeUndefined();
});
it('combines version and network filters', () => {
expect(findDeployment({ version: '1.0.0', network: '137' }, DEPLOYMENTS)).toBe(DEPLOYMENT_V1);
});
it('returns undefined when version matches but network does not', () => {
expect(findDeployment({ version: '1.0.0', network: '9999' }, DEPLOYMENTS)).toBeUndefined();
});
it('returns undefined for an empty deployments list', () => {
expect(findDeployment({}, [])).toBeUndefined();
});
});