github.com/igggame/nebulas-go@v2.1.0+incompatible/nebtestkit/cases/contract/contract.erc20.test.js (about)

     1  'use strict';
     2  
     3  var TestnetNodes = require('../../testnet-nodes');
     4  var FS = require("fs");
     5  var expect = require('chai').expect;
     6  var BigNumber = require('bignumber.js');
     7  
     8  var nodes = new TestnetNodes();
     9  var coinbase = "1a263547d167c74cf4b8f9166cfa244de0481c514a45aa2c"
    10  var passphrase = "passphrase"
    11  nodes.Start();
    12  
    13  function checkTransaction(hash, done, count) {
    14      if (count > 6) {
    15          console.log("tx receipt timeout:" + hash);
    16          nodes.Stop();
    17          done();
    18          return;
    19      }
    20  
    21      var node = nodes.RPC(0);
    22      node.api.getTransactionReceipt(hash).then(function (resp) {
    23          console.log("tx receipt:" + JSON.stringify(resp));
    24          return node.api.getAccountState(coinbase);
    25      }).then(function (resp) {
    26          console.log("after state:" + JSON.stringify(resp));
    27          nodes.Stop();
    28          done();
    29      }).catch(function (err) {
    30          setTimeout(function () {
    31              checkTransaction(hash, done, count + 1);
    32          }, 2000);
    33      });
    34  }
    35  
    36  describe('contract transaction', function () {
    37      before(function (done) {
    38          this.timeout(10000);
    39          setTimeout(done, 5000);
    40      });
    41  
    42      it('erc20 contract', function (done) {
    43          var state;
    44          var node = nodes.RPC(0);
    45          node.api.getAccountState(coinbase).then(function (resp) {
    46              console.log(resp);
    47              state = resp;
    48              var erc20 = FS.readFileSync("../nf/nvm/test/ERC20.js", "utf-8");
    49              var contract = {
    50                  "source": erc20,
    51                  "sourceType": "js",
    52                  "args": '["TestToken", "NAS", 1000000000]'
    53              }
    54              return nodes.SendTransaction(coinbase, coinbase, "0", parseInt(state.nonce) + 1, "0", "2000000", contract);
    55          }).then(function (resp) {
    56              console.log(resp);
    57              expect(resp).to.be.have.property('contract_address');
    58              var call = {
    59                  "function": "totalSupply"
    60              }
    61              return nodes.SendTransaction(coinbase, resp.contract_address, "0", parseInt(state.nonce) + 2, "0", "2000000", call);
    62          }).then(function (resp) {
    63              console.log(resp);
    64              checkTransaction(resp.txhash, done, 1);
    65          }).catch(function (err) {
    66              console.log("send err:" + err)
    67              nodes.Stop();
    68              done();
    69          });
    70      });
    71  });