Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#23 Remove rollups v0.8.2 #27

Merged
merged 2 commits into from
Jul 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/rollups@0.8.2",
"@explorer/ui": "*",
"@explorer/wallet": "*",
"@graphql-tools/load-files": "^6.6.1",
Expand Down
2 changes: 1 addition & 1 deletion apps/rollups/src/containers/rollups/Dapps.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import {
DApp_OrderBy,
useDappsQuery,
useDashboardQuery,
} from '../../generated//graphql/subgraph';
} from '../../generated/graphql/subgraph';

export interface DappsProps {
chainId: number;
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