import BigNumber from "bignumber.js";
import { computeBalance, computeBalanceBridge } from "./getBalance";

const account = JSON.parse(`
  {
  "account_name": "FreezeBandwith",
  "address": "41ae18eb0a9e067f8884058470ed187f44135d816d",
  "balance": 1781772,
  "votes": [
    {
      "vote_address": "TLyqzVGLV1srkB7dToTAEqgDSfPtXRJZYH",
      "vote_count": 15
    },
    {
      "vote_address": "TGj1Ej1qRzL9feLTLhjwgxXF4Ct6GTWg2U",
      "vote_count": 1
    },
    {
      "vote_address": "TCZvvbn4SCVyNhCAt1L8Kp1qk5rtMiKdBB",
      "vote_count": 2
    }
  ],
  "create_time": 1556974023000,
  "latest_opration_time": 1653052509000,
  "latest_withdraw_time": 1652964336000,
  "latest_consume_free_time": 1653052509000,
  "net_window_size": 28800000,
  "net_window_optimized": true,
  "account_resource": {
    "frozen_balance_for_energy": {
      "frozen_balance": 26000000,
      "expire_time": 1580573091000
    },
    "latest_consume_time_for_energy": 1581943389000,
    "energy_window_size": 28800000,
    "energy_window_optimized": true
  },
  "owner_permission": {
    "permission_name": "owner",
    "threshold": 1,
    "keys": [
      {
        "address": "TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9",
        "weight": 1
      }
    ]
  },
  "active_permission": [
    {
      "type": "Active",
      "id": 2,
      "permission_name": "active",
      "threshold": 1,
      "operations": "7fff1fc0033e0000000000000000000000000000000000000000000000000000",
      "keys": [
        {
          "address": "TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9",
          "weight": 1
        }
      ]
    }
  ],
  "frozenV2": [
    {},
    {
      "type": "ENERGY"
    },
    {
      "type": "TRON_POWER"
    }
  ],
  "assetV2": [
    {
      "key": "1002897",
      "value": 10000000
    },
    {
      "key": "1002775",
      "value": 5000000
    },
    {
      "key": "1002830",
      "value": 10000000
    },
    {
      "key": "1002962",
      "value": 10000000
    },
    {
      "key": "1002876",
      "value": 10000000
    },
    {
      "key": "1002398",
      "value": 5000000
    },
    {
      "key": "1002573",
      "value": 5000000
    },
    {
      "key": "1002881",
      "value": 10000000
    },
    {
      "key": "1002927",
      "value": 10000000
    },
    {
      "key": "1002736",
      "value": 5000000
    },
    {
      "key": "1002814",
      "value": 10000000
    },
    {
      "key": "1002858",
      "value": 10000000
    },
    {
      "key": "1002000",
      "value": 26888000
    },
    {
      "key": "1004031",
      "value": 9856699
    }
  ],
  "free_asset_net_usageV2": [
    {
      "key": "1002897",
      "value": 0
    },
    {
      "key": "1002775",
      "value": 0
    },
    {
      "key": "1002830",
      "value": 0
    },
    {
      "key": "1002962",
      "value": 0
    },
    {
      "key": "1002876",
      "value": 0
    },
    {
      "key": "1002398",
      "value": 0
    },
    {
      "key": "1002573",
      "value": 0
    },
    {
      "key": "1002881",
      "value": 0
    },
    {
      "key": "1002927",
      "value": 0
    },
    {
      "key": "1002736",
      "value": 0
    },
    {
      "key": "1002814",
      "value": 0
    },
    {
      "key": "1002858",
      "value": 0
    },
    {
      "key": "1002000",
      "value": 0
    },
    {
      "key": "1004031",
      "value": 0
    }
  ],
  "trc20": [
    {
      "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7": "46825830"
    },
    {
      "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t": "376"
    }
  ]
}
`);

describe("computeBalance", () => {
  it("returns expected value", () => {
    const balance = computeBalance(account);
    expect(balance).toEqual(BigInt("27781772"));
  });
});

describe("computeBalanceBridge", () => {
  it("returns expected value", () => {
    const balance = computeBalanceBridge(account);
    expect(balance).toEqual(new BigNumber("27781772"));
  });
});
