diff --git a/.travis.yml b/.travis.yml index 0e670ddc..bdd83b56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ before_script: - git clone https://github.com/oceanprotocol/barge - cd barge - git checkout v3 - - export PROVIDER_VERSION=phase2 + - export PROVIDER_VERSION=latest - bash -x start_ocean.sh --no-dashboard 2>&1 > start_ocean.log & - cd .. - sleep 300 diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index e27c8213..5b82ed23 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -6,24 +6,19 @@ const defaultDatatokensABI = require('@oceanprotocol/contracts/artifacts/develop */ export class DataTokens { public factoryAddress: string - public factoryABI: object - public datatokensABI: object + public factoryABI: any + public datatokensABI: any public web3: any /** * Instantiate DataTokens (independently of Ocean). * @param {String} factoryAddress - * @param {Object} factoryABI - * @param {Object} datatokensABI - * @param {Object} web3 + * @param {any} factoryABI + * @param {any} datatokensABI + * @param {any} web3 */ - constructor( - factoryAddress: string, - factoryABI: object, - datatokensABI: object, - web3: any - ) { + constructor(factoryAddress: string, factoryABI: any, datatokensABI: any, web3: any) { this.factoryAddress = factoryAddress this.factoryABI = factoryABI || defaultFactoryABI this.datatokensABI = datatokensABI || defaultDatatokensABI diff --git a/src/ocean/Account.ts b/src/ocean/Account.ts index 4d316d0f..fb932ece 100644 --- a/src/ocean/Account.ts +++ b/src/ocean/Account.ts @@ -76,12 +76,52 @@ export default class Account extends Instantiable { */ /** - * Balance of Any Token. - * @return {Promise} + * Balance of Any Token (converted from wei). + * @return {Promise} */ - public async getTokenBalance(TokenAdress: string): Promise { - // TO DO - return 0 + public async getTokenBalance(TokenAdress: string): Promise { + if (TokenAdress === null) return null + const minABI = [ + { + constant: true, + inputs: [ + { + name: '_owner', + type: 'address' + } + ], + name: 'balanceOf', + outputs: [ + { + name: 'balance', + type: 'uint256' + } + ], + payable: false, + stateMutability: 'view', + type: 'function' + } + ] + let result = null + try { + const token = new this.web3.eth.Contract(minABI as any, TokenAdress, { + from: this.id + }) + result = this.web3.utils.fromWei( + await token.methods.balanceOf(this.id).call() + ) + } catch (e) { + console.error(e) + } + return result + } + + /** + * Balance of Ocean Token. (converted from wei). + * @return {Promise} + */ + public async getOceanBalance(): Promise { + return this.getTokenBalance(this.config.oceanTokenAddress) } /** @@ -94,17 +134,11 @@ export default class Account extends Instantiable { } /** - * Balance of Ether. - * @return {Promise} + * Balance of Ether.(converted from wei). + * @return {Promise} */ - public async getEtherBalance(): Promise { - // TO DO - /* return this.web3.eth - .getBalance(this.id, 'latest') - .then((balance: string): number => { - return new BigNumber(balance).toNumber() - }) - */ - return 0 + public async getEtherBalance(): Promise { + const result = await this.web3.eth.getBalance(this.id, 'latest') + return this.web3.utils.fromWei(result) } } diff --git a/src/ocean/Accounts.ts b/src/ocean/Accounts.ts index 041a69ba..ed3e20ce 100644 --- a/src/ocean/Accounts.ts +++ b/src/ocean/Accounts.ts @@ -31,21 +31,30 @@ export class Accounts extends Instantiable { } /** - * Return account balance. + * Return account balance for a given ERC20 token * @param {String} TokenAddress . * @param {Account} account Account instance. - * @return {Promise} Ether and Ocean Token balance. + * @return {Promise} Token balance. */ - public balance(TokenAddress: string, account: Account): Promise { + public getTokenBalance(TokenAddress: string, account: Account): Promise { return account.getTokenBalance(TokenAddress) } + /** + * Return account balance for a Ocean Tokens + * @param {Account} account Account instance. + * @return {Promise} Ocean Token balance. + */ + public getOceanBalance(account: Account): Promise { + return account.getOceanBalance() + } + /** * Return account balance in ETH * @param {Account} account Account instance. - * @return {Promise} Ether and Ocean Token balance. + * @return {Promise} Ether balance. */ - public ETHbalance(account: Account): Promise { + public getEtherBalance(account: Account): Promise { return account.getEtherBalance() } } diff --git a/test/integration/ComputeFlow.test.ts b/test/integration/ComputeFlow.test.ts index cba228de..7b480020 100644 --- a/test/integration/ComputeFlow.test.ts +++ b/test/integration/ComputeFlow.test.ts @@ -3,12 +3,7 @@ import { DataTokens } from '../../src/datatokens/Datatokens' import { Ocean } from '../../src/ocean/Ocean' import config from './config' import { assert } from 'console' -import { ComputeJob } from '../../src/ocean/interfaces/ComputeJob' -import { - Service, - ServiceComputePrivacy, - ServiceCompute -} from '../../src/ddo/interfaces/Service' +import { ServiceComputePrivacy } from '../../src/ddo/interfaces/Service' const Web3 = require('web3') const web3 = new Web3('http://127.0.0.1:8545') const factory = require('@oceanprotocol/contracts/artifacts/development/Factory.json') @@ -23,11 +18,9 @@ describe('Compute flow', () => { let datasetNoRawAlgo let datasetWithTrustedAlgo let algorithmAsset - let marketplace let contracts let datatoken let tokenAddress - let service1 let price let ocean let computeService @@ -73,7 +66,6 @@ describe('Compute flow', () => { owner = (await ocean.accounts.list())[0] alice = (await ocean.accounts.list())[1] bob = (await ocean.accounts.list())[2] - marketplace = (await ocean.accounts.list())[3] data = { t: 1, url: ocean.config.metadataStoreUri } blob = JSON.stringify(data) await contracts.deployContracts(owner.getId())