Skip to content

Commit

Permalink
refactor(rollups): Remove rollups v0.8.2
Browse files Browse the repository at this point in the history
  • Loading branch information
nevendyulgerov committed Jun 30, 2023
1 parent 32f43b7 commit c3b7460
Show file tree
Hide file tree
Showing 7 changed files with 11 additions and 254 deletions.
58 changes: 4 additions & 54 deletions apps/rollups/__tests__/services/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,17 @@
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
// PARTICULAR PURPOSE. See the GNU General Public License for more details.

import { CartesiDAppFactory as V08Factory } from '@cartesi/rollups-0.8';
import { TypedEvent } from '@cartesi/rollups-0.8/dist/src/types/common';
import { ApplicationCreatedEvent } from '@cartesi/rollups-0.8/dist/src/types/contracts/CartesiDAppFactory';
import { InputAddedEvent } from '@cartesi/rollups-0.8/dist/src/types/contracts/facets/InputFacet';
import { TypedEvent } from '@cartesi/rollups/dist/src/types/common';
import { ApplicationCreatedEvent } from '@cartesi/rollups/dist/src/types/contracts/dapp/CartesiDAppFactory';
import { InputAddedEvent as BoxInputAddedEvent } from '@cartesi/rollups/dist/src/types/contracts/inputs/InputBox';
import { utils } from 'ethers';
import { mock } from 'jest-mock-extended';
import { useInputBoxMeta } from '../../src/services/contracts/inputBox';
import { buildInputFacetMeta } from '../../src/services/contracts/inputFacet';
import {
useRollupLegacyFactories,
useRollupsFactory,
} from '../../src/services/useRollupsFactory';
import { useRollupsFactory } from '../../src/services/useRollupsFactory';
import { ReturnOf } from '../test-utilities';

const typedEvent = mock<TypedEvent>();
type UseRollupFactoryReturn = ReturnOf<typeof useRollupsFactory>;
type UseRollupLegacyFactoriesReturn = ReturnOf<typeof useRollupLegacyFactories>;
type BuildInputFacetMetaReturn = ReturnOf<typeof buildInputFacetMeta>;
type UseInputBoxMetaReturn = ReturnOf<typeof useInputBoxMeta>;
type Block = Awaited<ReturnOf<typeof typedEvent.getBlock>>;

Expand All @@ -38,13 +30,6 @@ function createBlock(timestamp: number) {
block.timestamp = timestamp;
return block;
}
export function buildInputAddedEvent() {
const evt = mock<InputAddedEvent>();
const block = createBlock(DEFAULT_TIMESTAMP);
evt.address = utils.hexlify(200);
evt.getBlock.mockResolvedValue(block);
return evt;
}

export function buildBoxInputAddedEvent() {
const evt = mock<BoxInputAddedEvent>();
Expand All @@ -70,18 +55,6 @@ function buildMockInputBoxMeta() {
return mock<UseInputBoxMetaReturn>();
}

function buildMockInputFacetMeta() {
return mock<BuildInputFacetMetaReturn>();
}

function buildMockV08Factory() {
return mock<V08Factory>();
}

function buildMockLegacyFactories() {
return mock<UseRollupLegacyFactoriesReturn>();
}

function buildRollupsFactory() {
return mock<UseRollupFactoryReturn>();
}
Expand All @@ -93,13 +66,6 @@ function buildRollupsFactory() {
* optimistic perspective trying to avoid undefined / null values where applicable.
*/

function buildInputFacetMetaReturn() {
const mock = buildMockInputFacetMeta();
const inputAddedEventStub = buildInputAddedEvent();
mock.getInputs.mockResolvedValue([inputAddedEventStub]);
return mock;
}

function buildUseInputBoxMetaReturn(): UseInputBoxMetaReturn {
const mock = buildMockInputBoxMeta();
mock.getInputs.mockResolvedValue([
Expand All @@ -110,17 +76,6 @@ function buildUseInputBoxMetaReturn(): UseInputBoxMetaReturn {
return mock;
}

function buildUseRollupLegacyFactoriesReturn(): UseRollupLegacyFactoriesReturn {
const mock = buildMockLegacyFactories();
mock.v08Factory = buildMockV08Factory();
mock.v08Factory.queryFilter = jest.fn(() => Promise.resolve([]));
mock.v08Factory.filters = {
...mock.v08Factory.filters,
ApplicationCreated: jest.fn(),
};
return mock;
}

function buildUseRollupFactoryReturn(): UseRollupFactoryReturn {
const mock = buildRollupsFactory();
mock.queryFilter.mockResolvedValue(Promise.resolve([]));
Expand All @@ -131,9 +86,4 @@ function buildUseRollupFactoryReturn(): UseRollupFactoryReturn {
return mock;
}

export {
buildUseRollupLegacyFactoriesReturn,
buildUseRollupFactoryReturn,
buildInputFacetMetaReturn,
buildUseInputBoxMetaReturn,
};
export { buildUseRollupFactoryReturn, buildUseInputBoxMetaReturn };
82 changes: 1 addition & 81 deletions apps/rollups/__tests__/services/useApplications.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,17 @@
import { CartesiDAppFactory } from '@cartesi/rollups';
import { act, cleanup, renderHook, waitFor } from '@testing-library/react';
import { useInputBoxMeta } from '../../src/services/contracts/inputBox';
import { buildInputFacetMeta } from '../../src/services/contracts/inputFacet';
import { useApplications } from '../../src/services/useApplications';
import { networks, useNetwork } from '../../src/services/useNetwork';
import {
useRollupLegacyFactories,
useRollupsFactory,
} from '../../src/services/useRollupsFactory';
import { useRollupsFactory } from '../../src/services/useRollupsFactory';
import {
buildApplicationCreatedEvent,
buildInputFacetMetaReturn,
buildUseInputBoxMetaReturn,
buildUseRollupFactoryReturn,
buildUseRollupLegacyFactoriesReturn,
} from './mocks';

const networkMod = '../../src/services/useNetwork';
const rollupsMod = '../../src/services/useRollupsFactory';
const inputFacetMod = '../../src/services/contracts/inputFacet';
const inputBoxMod = '../../src/services/contracts/inputBox';
const account = '0x907eA0e65Ecf3af503007B382E1280Aeb46104ad';

Expand All @@ -52,15 +45,6 @@ jest.mock(rollupsMod, () => {
};
});

jest.mock(inputFacetMod, () => {
const originalModule = jest.requireActual(inputFacetMod);
return {
__esModule: true,
...originalModule,
buildInputFacetMeta: jest.fn(),
};
});

jest.mock(inputBoxMod, () => {
const originalModule = jest.requireActual(inputBoxMod);
return {
Expand All @@ -74,13 +58,6 @@ const mockUseNetwork = useNetwork as jest.MockedFunction<typeof useNetwork>;
const mockUseRollupsFactory = useRollupsFactory as jest.MockedFunction<
typeof useRollupsFactory
>;
const mockUseRollupsLegacyFactories =
useRollupLegacyFactories as jest.MockedFunction<
typeof useRollupLegacyFactories
>;
const mockBuildInputFacetMeta = buildInputFacetMeta as jest.MockedFunction<
typeof buildInputFacetMeta
>;

const mockUseInputBoxMeta = useInputBoxMeta as jest.MockedFunction<
typeof useInputBoxMeta
Expand All @@ -90,13 +67,8 @@ const defaultNetwork = networks[0x5];

describe('useApplications Hook', () => {
beforeEach(() => {
mockUseRollupsLegacyFactories.mockReturnValue(
buildUseRollupLegacyFactoriesReturn()
);

mockUseInputBoxMeta.mockReturnValue(buildUseInputBoxMetaReturn());
mockUseRollupsFactory.mockReturnValue(buildUseRollupFactoryReturn());
mockBuildInputFacetMeta.mockReturnValue(buildInputFacetMetaReturn());
mockUseNetwork.mockReturnValue({
...defaultNetwork,
deployment: () => {
Expand Down Expand Up @@ -232,56 +204,4 @@ describe('useApplications Hook', () => {
expect(result.current.applications[0].inputs).toHaveLength(0);
expect(errorLog).toHaveBeenCalledWith(new Error('not found'));
});

describe('Legacy factories (v0.8)', () => {
it('should return information about DApps created for legacy factory', async () => {
const factory = buildUseRollupLegacyFactoriesReturn();
factory.v08Factory.queryFilter = jest.fn(() =>
Promise.resolve<any>([buildApplicationCreatedEvent()])
);
mockUseRollupsLegacyFactories.mockReturnValue(factory);

const { result } = renderHook(() => useApplications());
const currentResult = result.current;

await waitFor(() => expect(result.current).not.toBe(currentResult));

expect(result.current.error).not.toBeDefined();
expect(result.current.applications).toHaveLength(1);
expect(result.current.applications[0]).toHaveProperty(
'factoryVersion',
'0.8'
);
expect(result.current.applications[0]).toHaveProperty(
'address',
'0x64'
);
expect(result.current.applications[0]).toHaveProperty(
'deploymentTimestamp'
);
expect(
result.current.applications[0].inputs.length
).toBeGreaterThan(0);
});

it('should provide inputs as an empty list in case of failure on fetching inputs', async () => {
const facet = buildInputFacetMetaReturn();
facet.getInputs.mockRejectedValue(new Error('failure'));
mockBuildInputFacetMeta.mockReturnValue(facet);

const factory = buildUseRollupLegacyFactoriesReturn();
factory.v08Factory.queryFilter = jest.fn(() =>
Promise.resolve<any>([buildApplicationCreatedEvent()])
);
mockUseRollupsLegacyFactories.mockReturnValue(factory);

const { result } = renderHook(useApplications);
const currResult = result.current;

await waitFor(() => expect(result.current).not.toBe(currResult));

expect(result.current.applications).toHaveLength(1);
expect(result.current.applications[0].inputs).toEqual([]);
});
});
});
1 change: 0 additions & 1 deletion apps/rollups/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
},
"dependencies": {
"@cartesi/rollups": "0.9.0",
"@cartesi/rollups-0.8": "npm:@cartesi/[email protected]",
"@explorer/ui": "*",
"@explorer/wallet": "*",
"@graphql-tools/load-files": "^6.6.1",
Expand Down
41 changes: 0 additions & 41 deletions apps/rollups/src/services/contracts/inputFacet.tsx

This file was deleted.

24 changes: 4 additions & 20 deletions apps/rollups/src/services/useApplications.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,12 @@
// under the License.

import { CartesiDAppFactory } from '@cartesi/rollups';
import { CartesiDAppFactory as V08Factory } from '@cartesi/rollups-0.8';
import { InputAddedEvent as InputAdded } from '@cartesi/rollups-0.8/dist/src/types/contracts/facets/InputFacet';
import { InputAddedEvent } from '@cartesi/rollups/dist/src/types/contracts/inputs/InputBox';
import { useWallet } from '@explorer/wallet';
import { useEffect, useState } from 'react';
import { useInputBoxMeta } from './contracts/inputBox';
import { buildInputFacetMeta } from './contracts/inputFacet';
import { useNetwork } from './useNetwork';
import {
useRollupLegacyFactories,
useRollupsFactory,
} from './useRollupsFactory';
import { useRollupsFactory } from './useRollupsFactory';

interface NetworkError extends Error {
code: number;
Expand All @@ -35,11 +29,11 @@ export interface Applications {
interface Application {
factoryVersion: string;
address: string;
inputs: InputAddedEvent[] | InputAdded[];
inputs: InputAddedEvent[];
deploymentTimestamp: number;
}

type FactoryType = CartesiDAppFactory | V08Factory;
type FactoryType = CartesiDAppFactory;
type FactoryVersion = '0.8' | '0.9';

/**
Expand Down Expand Up @@ -102,7 +96,6 @@ export const useApplications = (): Applications => {
const wallet = useWallet();
const network = useNetwork();
const factory = useRollupsFactory();
const legacyFactories = useRollupLegacyFactories();
const inputBoxMeta = useInputBoxMeta();

useEffect(() => {
Expand All @@ -124,15 +117,6 @@ export const useApplications = (): Applications => {
(dapp: string, blockNumber?: number) =>
inputBoxMeta.getInputs(dapp, blockNumber)
),
fetchApplications(
legacyFactories.v08Factory,
'0.8',
deployBlock,
(dapp: string, blockNumber?: number) =>
buildInputFacetMeta(dapp, wallet.library).getInputs(
blockNumber
)
),
])
.then((result) => {
setApplications({
Expand All @@ -151,7 +135,7 @@ export const useApplications = (): Applications => {
} else {
setApplications({ loading: false, applications: [] });
}
}, [factory, network, legacyFactories, wallet.library, inputBoxMeta]);
}, [factory, network, wallet.library, inputBoxMeta]);

return applications;
};
Loading

0 comments on commit c3b7460

Please sign in to comment.