git.delta.rocks / unique-network / refs/commits / 68058b4890a6

difftreelog

source

tests/src/util/playgrounds/unique.dev.ts2.7 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// SPDX-License-Identifier: Apache-2.034import {mnemonicGenerate} from '@polkadot/util-crypto';5import {UniqueHelper} from './unique';6import {IKeyringPair} from '@polkadot/types/types';7import {ApiPromise, WsProvider} from '@polkadot/api';8import * as defs from '../../interfaces/definitions';91011export class DevUniqueHelper extends UniqueHelper {12  /**13   * Arrange methods for tests14   */15  arrange: ArrangeGroup;1617  constructor(logger: { log: (msg: any, level: any) => void, level: any }) {18    super(logger);19    this.arrange = new ArrangeGroup(this);20  }2122  async connect(wsEndpoint: string, listeners?: any): Promise<void> {23    const wsProvider = new WsProvider(wsEndpoint);24    this.api = new ApiPromise({25      provider: wsProvider,26      signedExtensions: {27        ContractHelpers: {28          extrinsic: {},29          payload: {},30        },31        FakeTransactionFinalizer: {32          extrinsic: {},33          payload: {},34        },35      },36      rpc: {37        unique: defs.unique.rpc,38        rmrk: defs.rmrk.rpc,39        eth: {40          feeHistory: {41            description: 'Dummy',42            params: [],43            type: 'u8',44          },45          maxPriorityFeePerGas: {46            description: 'Dummy',47            params: [],48            type: 'u8',49          },50        },51      },52    });53    await this.api.isReadyOrError;54    this.network = await UniqueHelper.detectNetwork(this.api);55  }56}5758class ArrangeGroup {59  helper: UniqueHelper;6061  constructor(helper: UniqueHelper) {62    this.helper = helper;63  }6465  /**66   * Generates accounts with the specified UNQ token balance 67   * @param balances balances for generated accounts. Each balance will be multiplied by the token nominal.68   * @param donor donor account for balances69   * @returns array of newly created accounts70   * @example const [acc1, acc2, acc3] = await createAccounts([0n, 10n, 20n], donor); 71   */72  creteAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {73    let nonce = await this.helper.chain.getNonce(donor.address);74    const tokenNominal = this.helper.balance.getOneTokenNominal();75    const transactions = [];76    const accounts = [];77    for (const balance of balances) {78      const recepient = this.helper.util.fromSeed(mnemonicGenerate());79      accounts.push(recepient);80      if (balance !== 0n) {81        const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, balance * tokenNominal]);82        transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));83        nonce++;84      }85    }8687    await Promise.all(transactions);88    return accounts;89  };90}