All files / test/services/addressDiscovery mockData.ts

60% Statements 21/35
87.5% Branches 14/16
23.52% Functions 4/17
57.57% Lines 19/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97    1x   1x               261x     261x 261x 261x 261x 261x 261x 261x   261x                               2x               148x   148x 11x           137x                   1x                             1x             65x                
import { Cardano, ChainHistoryProvider, Paginated, TransactionsByAddressesArgs } from '@cardano-sdk/core';
 
const NOT_IMPLEMENTED = 'Not implemented';
 
export const mockChainHistoryProvider: ChainHistoryProvider = {
  blocksByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  healthCheck: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  transactionsByAddresses: (args: TransactionsByAddressesArgs): Promise<Paginated<Cardano.HydratedTx>> => {
    const address = args.addresses.length > 0 ? args.addresses[0] : undefined;
 
    // Only even payment indices and indices less than 100 will ''return' results.
    if (address) {
      const segments = address.split('_');
      const paymentIndex = Number(segments[1]);
      const stakeIndex = Number(segments[2]);
      const isPaymentEven = paymentIndex % 2 === 0;
      const isExternalAddress = Number(segments[3]) === 0;
      const isStakeAddress = paymentIndex === 0 && stakeIndex > 0;
 
      return Promise.resolve({
        pageResults: new Array<Cardano.HydratedTx>(),
        totalResultCount: !isStakeAddress && isExternalAddress && isPaymentEven && paymentIndex < 100 ? 1 : 0
      });
    }
 
    return Promise.resolve({
      pageResults: new Array<Cardano.HydratedTx>(),
      totalResultCount: 0
    });
  },
  transactionsByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  }
};
 
export const createMockChainHistoryProvider = (addressesWithTx: Map<Cardano.PaymentAddress, number>) => ({
  blocksByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  healthCheck: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  transactionsByAddresses: (args: TransactionsByAddressesArgs): Promise<Paginated<Cardano.HydratedTx>> => {
    const address = args.addresses.length > 0 ? args.addresses[0] : undefined;
 
    if (address && addressesWithTx.has(address)) {
      return Promise.resolve({
        pageResults: new Array<Cardano.HydratedTx>(),
        totalResultCount: addressesWithTx.get(address)!
      });
    }
 
    return Promise.resolve({
      pageResults: new Array<Cardano.HydratedTx>(),
      totalResultCount: 0
    });
  },
  transactionsByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  }
});
 
export const mockAlwaysFailChainHistoryProvider: ChainHistoryProvider = {
  blocksByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  healthCheck: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  transactionsByAddresses: (): Promise<Paginated<Cardano.HydratedTx>> => {
    throw new Error(NOT_IMPLEMENTED);
  },
  transactionsByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  }
};
 
export const mockAlwaysEmptyChainHistoryProvider: ChainHistoryProvider = {
  blocksByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  healthCheck: () => {
    throw new Error(NOT_IMPLEMENTED);
  },
  transactionsByAddresses: async (): Promise<Paginated<Cardano.HydratedTx>> => ({
    pageResults: [],
    totalResultCount: 0
  }),
  transactionsByHashes: () => {
    throw new Error(NOT_IMPLEMENTED);
  }
};