non-fungible-apps/subgraph/tests/matchstick/helpers/utils.ts

223 lines
5.5 KiB
TypeScript

import { newMockEvent } from 'matchstick-as';
import { ethereum, Address, BigInt, Bytes } from '@graphprotocol/graph-ts';
import {
Approval as ApprovalEvent,
ApprovalForAll as ApprovalForAllEvent,
Transfer as TransferEvent,
NewMint as NewMintEvent
} from '../../../generated/FleekNFA/FleekNFA';
import {
handleApproval,
handleApprovalForAll,
handleNewMint,
handleTransfer,
} from '../../../src/fleek-nfa';
export function createApprovalEvent(
event_count: i32,
owner: Address,
approved: Address,
tokenId: BigInt
): ApprovalEvent {
let approvalEvent = changetype<ApprovalEvent>(newMockEvent());
approvalEvent.parameters = new Array();
approvalEvent.parameters.push(
new ethereum.EventParam('owner', ethereum.Value.fromAddress(owner))
);
approvalEvent.parameters.push(
new ethereum.EventParam('approved', ethereum.Value.fromAddress(approved))
);
approvalEvent.parameters.push(
new ethereum.EventParam(
'tokenId',
ethereum.Value.fromUnsignedBigInt(tokenId)
)
);
approvalEvent.transaction.hash = Bytes.fromI32(event_count);
approvalEvent.logIndex = new BigInt(event_count);
return approvalEvent;
}
export function createApprovalForAllEvent(
event_count: i32,
owner: Address,
operator: Address,
approved: boolean
): ApprovalForAllEvent {
let approvalForAllEvent = changetype<ApprovalForAllEvent>(newMockEvent());
approvalForAllEvent.parameters = new Array();
approvalForAllEvent.parameters.push(
new ethereum.EventParam('owner', ethereum.Value.fromAddress(owner))
);
approvalForAllEvent.parameters.push(
new ethereum.EventParam('operator', ethereum.Value.fromAddress(operator))
);
approvalForAllEvent.parameters.push(
new ethereum.EventParam('approved', ethereum.Value.fromBoolean(approved))
);
approvalForAllEvent.transaction.hash = Bytes.fromI32(event_count);
approvalForAllEvent.logIndex = new BigInt(event_count);
return approvalForAllEvent;
}
export function createTransferEvent(
event_count: i32,
from: Address,
to: Address,
tokenId: BigInt
): TransferEvent {
let transferEvent = changetype<TransferEvent>(newMockEvent());
transferEvent.parameters = new Array();
transferEvent.parameters.push(
new ethereum.EventParam('from', ethereum.Value.fromAddress(from))
);
transferEvent.parameters.push(
new ethereum.EventParam('to', ethereum.Value.fromAddress(to))
);
transferEvent.parameters.push(
new ethereum.EventParam(
'tokenId',
ethereum.Value.fromUnsignedBigInt(tokenId)
)
);
transferEvent.transaction.hash = Bytes.fromI32(event_count);
transferEvent.logIndex = new BigInt(event_count);
return transferEvent;
}
export function createNewMintEvent(
event_count: i32,
to: Address,
tokenId: BigInt
): NewMintEvent {
let newMintEvent = changetype<NewMintEvent>(newMockEvent());
newMintEvent.parameters = new Array();
newMintEvent.parameters.push(
new ethereum.EventParam(
'tokenId',
ethereum.Value.fromUnsignedBigInt(tokenId)
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'name',
ethereum.Value.fromString('name')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'description',
ethereum.Value.fromString('description')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'externalURL',
ethereum.Value.fromString('externalurl')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'ENS',
ethereum.Value.fromString('ens')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'commitHash',
ethereum.Value.fromString('hash')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'gitRepository',
ethereum.Value.fromString('repo')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'logo',
ethereum.Value.fromString('logo')
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'color',
ethereum.Value.fromI32(1234)
)
);
newMintEvent.parameters.push(
new ethereum.EventParam(
'accessPointAutoApproval',
ethereum.Value.fromBoolean(true)
)
);
newMintEvent.parameters.push(
new ethereum.EventParam('minter', ethereum.Value.fromAddress(to))
);
newMintEvent.parameters.push(
new ethereum.EventParam('owner', ethereum.Value.fromAddress(to))
);
newMintEvent.transaction.hash = Bytes.fromI32(event_count);
newMintEvent.logIndex = new BigInt(event_count);
return newMintEvent;
}
export const CONTRACT: Address = Address.fromString(
'0x0000000000000000000000000000000000000000'
);
export const CONTRACT_OWNER: Address = Address.fromString(
'0x1000000000000000000000000000000000000001'
);
export const TOKEN_OWNER_ONE: Address = Address.fromString(
'0x2000000000000000000000000000000000000002'
);
export const TOKEN_OWNER_TWO: Address = Address.fromString(
'0x3000000000000000000000000000000000000003'
);
export function handleTransfers(events: TransferEvent[]): void {
events.forEach((event) => {
handleTransfer(event);
});
}
export function handleApprovals(events: ApprovalEvent[]): void {
events.forEach((event) => {
handleApproval(event);
});
}
export function handleNewMints(events: NewMintEvent[]): void {
events.forEach((event) => {
handleNewMint(event);
});
}
export function handleApprovalForAlls(events: ApprovalForAllEvent[]): void {
events.forEach((event) => {
handleApprovalForAll(event);
});
}
export function makeEventId(id: i32): string {
return Bytes.fromI32(id).toHexString() + '00000000';
}