chore: add contract call details tests

This commit is contained in:
Thomas Osmonson
2021-06-30 14:29:18 -05:00
parent 86f36a4aaa
commit 4d14f589a7
3 changed files with 77 additions and 2 deletions

View File

@@ -0,0 +1,44 @@
import React from 'react';
import { render, waitFor } from '@testing-library/react';
import { ProviderWithWalletAndRequestToken } from '../../../../tests/state-utils';
import { ContractCallDetails } from './contract-call-details';
import { HEYSTACK_HEY_TX_REQUEST_DECODED } from '../../../../tests/mocks';
import { truncateMiddle } from '@stacks/ui-utils';
import { cvToString, deserializeCV } from '@stacks/transactions';
const truncatedContractAddress = truncateMiddle(HEYSTACK_HEY_TX_REQUEST_DECODED.contractAddress, 4);
const truncatedContractId = `${truncatedContractAddress}.${HEYSTACK_HEY_TX_REQUEST_DECODED.contractName}`;
const getStringValueFromHexCv = (hex: string) => {
const argCV = deserializeCV(Buffer.from(hex, 'hex'));
return cvToString(argCV);
};
const message = getStringValueFromHexCv(HEYSTACK_HEY_TX_REQUEST_DECODED.functionArgs[0]);
const giphyUrl = getStringValueFromHexCv(HEYSTACK_HEY_TX_REQUEST_DECODED.functionArgs[1]);
describe('<ContractCallDetails />', () => {
it('correctly displays the contract address and function name', async () => {
const { getByText } = render(
<ProviderWithWalletAndRequestToken>
<ContractCallDetails />
</ProviderWithWalletAndRequestToken>
);
await waitFor(() => {
getByText(HEYSTACK_HEY_TX_REQUEST_DECODED.functionName);
getByText(truncatedContractId);
});
});
it('correctly displays the function arguments (message and giphy url)', async () => {
const { getByText } = render(
<ProviderWithWalletAndRequestToken>
<ContractCallDetails />
</ProviderWithWalletAndRequestToken>
);
await waitFor(() => {
getByText(message);
getByText(giphyUrl);
});
});
});

View File

@@ -65,8 +65,8 @@ const FunctionArgumentsList = memo((props: StackProps) => {
<Stack divider={<Divider />} spacing="base" {...props}>
{transactionRequest.functionArgs.map((arg, index) => {
return (
<React.Suspense fallback={<>loading</>}>
<FunctionArgumentRow key={`${arg}-${index}`} arg={arg} index={index} />
<React.Suspense fallback={<>loading</>} key={`${arg}-${index}`}>
<FunctionArgumentRow arg={arg} index={index} />
</React.Suspense>
);
})}

View File

@@ -7,6 +7,37 @@ export const SECRET_KEY =
export const HEYSTACK_HEY_TX_REQUEST =
'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJzdHhBZGRyZXNzIjoiU1QyUEhDUEFOVlQ4RFZQU1k1VzJaWjgxTTI4NVE1WjhZNkRRTVpFN1oiLCJjb250cmFjdEFkZHJlc3MiOiJTVDIxRlRDODJDQ0tFMFlIOVNLNVNKMUQ0WEVNUkEwNjlGS1YwVko4TiIsImNvbnRyYWN0TmFtZSI6ImhleS1maW5hbCIsImZ1bmN0aW9uTmFtZSI6InNlbmQtbWVzc2FnZSIsInBvc3RDb25kaXRpb25zIjpbIjAxMDIxYWFkMTY1OTU1ZGU5MGRkZGIzZTJmMDVmZmEwMzQxMjBiNzJmZDFlMzMxYTgyZmQzMTAyNjMyNmUwN2EyOWNjY2I5OTA1YTRlYmE5ODUwMGM5N2MwOTY4NjU3OTJkNzQ2ZjZiNjU2ZTA5Njg2NTc5MmQ3NDZmNmI2NTZlMDEwMDAwMDAwMDAwMDAwMDAxIl0sIm5ldHdvcmsiOnsidmVyc2lvbiI6MTI4LCJjaGFpbklkIjoyMTQ3NDgzNjQ4LCJjb3JlQXBpVXJsIjoiaHR0cHM6Ly9zdGFja3Mtbm9kZS1hcGkucmVndGVzdC5zdGFja3MuY28iLCJibnNMb29rdXBVcmwiOiJodHRwczovL3N0YWNrcy1ub2RlLWFwaS5tYWlubmV0LnN0YWNrcy5jbyIsImJyb2FkY2FzdEVuZHBvaW50IjoiL3YyL3RyYW5zYWN0aW9ucyIsInRyYW5zZmVyRmVlRXN0aW1hdGVFbmRwb2ludCI6Ii92Mi9mZWVzL3RyYW5zZmVyIiwiYWNjb3VudEVuZHBvaW50IjoiL3YyL2FjY291bnRzIiwiY29udHJhY3RBYmlFbmRwb2ludCI6Ii92Mi9jb250cmFjdHMvaW50ZXJmYWNlIiwicmVhZE9ubHlGdW5jdGlvbkNhbGxFbmRwb2ludCI6Ii92Mi9jb250cmFjdHMvY2FsbC1yZWFkIn0sImZ1bmN0aW9uQXJncyI6WyIwZTAwMDAwMDE1Njg2NTc5MjA2NjcyNmY2ZDIwNzQ2ODY1MjA3NDY1NzM3NDIwNjE3MDcwIiwiMGEwZTAwMDAwMDdlNjg3NDc0NzA3MzNhMmYyZjZkNjU2NDY5NjEzMTJlNjc2OTcwNjg3OTJlNjM2ZjZkMmY2ZDY1NjQ2OTYxMmY0MTUzNjQzMDU1NmI2YTMwNzkzMzcxNGQ0ZDJmNjc2OTcwNjg3OTJlNjc2OTY2M2Y2MzY5NjQzZDMyMzkzODM1NjQ2NTYyNjIzMDc4MzQzMzZkMzQ3NjM0NjE3YTc3NjM3NTM5NzE2NzM0NmY2NjY0NjQ3OTc5MzA2OTY0NjI2YTZkNjk2ZDczN2E2ZjM2MzIzODMxNjc2YTI2NzI2OTY0M2Q2NzY5NzA2ODc5MmU2NzY5NjYyNjYzNzQzZDY3Il0sInR4VHlwZSI6ImNvbnRyYWN0X2NhbGwiLCJwdWJsaWNLZXkiOiIwMzFhNWQ1ZmIzNjQ1Yzc2YzUwODNlM2E0ZmI5YTU5YjVmZWQzMDljODcxOTc4NDcxZDY0NDhjOGFkZTg2MzgwZTgiLCJhcHBEZXRhaWxzIjp7Im5hbWUiOiJIZXlzdGFjayIsImljb24iOiIvaWNvbi5wbmcifX0.LCbb9_PlvkcxH6Swe1i9Jq6mtwD59fssnECcklzKWlq4h4IMdvaOjCGUoLR44pO7CuAr8oOBm6VrALvT4g8-oQ\n';
export const HEYSTACK_HEY_TX_REQUEST_DECODED = {
stxAddress: 'ST2PHCPANVT8DVPSY5W2ZZ81M285Q5Z8Y6DQMZE7Z',
contractAddress: 'ST21FTC82CCKE0YH9SK5SJ1D4XEMRA069FKV0VJ8N',
contractName: 'hey-final',
functionName: 'send-message',
postConditions: [
'01021aad165955de90dddb3e2f05ffa034120b72fd1e331a82fd31026326e07a29cccb9905a4eba98500c97c096865792d746f6b656e096865792d746f6b656e010000000000000001',
],
network: {
version: 128,
chainId: 2147483648,
coreApiUrl: 'https://stacks-node-api.regtest.stacks.co',
bnsLookupUrl: 'https://stacks-node-api.mainnet.stacks.co',
broadcastEndpoint: '/v2/transactions',
transferFeeEstimateEndpoint: '/v2/fees/transfer',
accountEndpoint: '/v2/accounts',
contractAbiEndpoint: '/v2/contracts/interface',
readOnlyFunctionCallEndpoint: '/v2/contracts/call-read',
},
functionArgs: [
'0e000000156865792066726f6d20746865207465737420617070',
'0a0e0000007e68747470733a2f2f6d65646961312e67697068792e636f6d2f6d656469612f41536430556b6a307933714d4d2f67697068792e6769663f6369643d3239383564656262307834336d347634617a776375397167346f6664647979306964626a6d696d737a6f36323831676a267269643d67697068792e6769662663743d67',
],
txType: 'contract_call',
publicKey: '031a5d5fb3645c76c5083e3a4fb9a59b5fed309c871978471d6448c8ade86380e8',
appDetails: {
name: 'Heystack',
icon: '/icon.png',
},
};
export const STX_TRANSFER_TX_REQUEST =
'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJzdHhBZGRyZXNzIjoiU1QzNVozWVFDVEMxV1o4WjdBS0hHRTkxSEswNVdLTUtQVE4xS1g3UTciLCJuZXR3b3JrIjp7InZlcnNpb24iOjEyOCwiY2hhaW5JZCI6MjE0NzQ4MzY0OCwiY29yZUFwaVVybCI6Imh0dHBzOi8vc3RhY2tzLW5vZGUtYXBpLnhlbm9uLmJsb2Nrc3RhY2sub3JnIiwiYm5zTG9va3VwVXJsIjoiaHR0cHM6Ly9jb3JlLmJsb2Nrc3RhY2sub3JnIiwiYnJvYWRjYXN0RW5kcG9pbnQiOiIvdjIvdHJhbnNhY3Rpb25zIiwidHJhbnNmZXJGZWVFc3RpbWF0ZUVuZHBvaW50IjoiL3YyL2ZlZXMvdHJhbnNmZXIiLCJhY2NvdW50RW5kcG9pbnQiOiIvdjIvYWNjb3VudHMiLCJjb250cmFjdEFiaUVuZHBvaW50IjoiL3YyL2NvbnRyYWN0cy9pbnRlcmZhY2UiLCJyZWFkT25seUZ1bmN0aW9uQ2FsbEVuZHBvaW50IjoiL3YyL2NvbnRyYWN0cy9jYWxsLXJlYWQifSwiYXV0aE9yaWdpbiI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsIm1lbW8iOiJGcm9tIGRlbW8gYXBwIiwicmVjaXBpZW50IjoiU1RCNDRIWVBZQVQyQkIyUUU1MTNOU1A4MUhUTVlXQkpQMDJIUEdLNiIsImFtb3VudCI6IjEwMiIsInB1YmxpY0tleSI6IjAyYzY3ZTZlZWMzYzY2MzY4MDU3MzIwZTYzMWNmZjAzZjFmMzY5MjI4ZDI0Mzc5ZjM1OGEwYWU4ZmY5NDJlNGVmZiIsInR4VHlwZSI6InRva2VuX3RyYW5zZmVyIiwiYXBwRGV0YWlscyI6eyJuYW1lIjoiVGVzdGluZyBBcHAiLCJpY29uIjoiL2Fzc2V0cy9tZXNzZW5nZXItYXBwLWljb24ucG5nIn19.SQm6Pg_ny1J0o9iReIfY2D9jkYUvaER-lmHe2Jxc8opfASH8bplRN1FlI8SQ4dOLO0rfvjvIaCV4qbPAylnNSA';