1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

fix datatoken unit testing

This commit is contained in:
Ahmed Ali 2020-06-19 10:27:39 +02:00
parent 3307f7a177
commit 52260cdf7f
6 changed files with 331 additions and 3661 deletions

3870
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,8 +16,8 @@
"release": "release-it --non-interactive",
"changelog": "auto-changelog -p",
"prepublishOnly": "npm run build",
"test": "mocha --opts test/unit/mocha.opts",
"test:integration": "mocha --opts test/integration/mocha.opts"
"test": "mocha --config=test/unit/.mocharc.json --node-env=test --exit",
"test:integration": "mocha --opts test/integration/mocha.opts"
},
"repository": {
"type": "git",
@ -46,8 +46,8 @@
"whatwg-url": "^8.0.0"
},
"devDependencies": {
"@oceanprotocol/contracts": "^0.2.2",
"@release-it/bumper": "^1.4.0",
"@oceanprotocol/contracts": "^0.2.0",
"@truffle/hdwallet-provider": "^1.0.33",
"@types/chai": "^4.2.11",
"@types/chai-spies": "^1.0.1",
@ -76,10 +76,7 @@
"ts-node": "^8.10.2",
"typedoc": "^0.17.1",
"typescript": "^3.9.5",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-merge": "^4.2.2"
"yargs": "^15.3.1"
},
"nyc": {
"include": [

View File

@ -1,7 +1,7 @@
import Account from '../ocean/Account'
import * as defaultFactoryABI from '@oceanprotocol/contracts/artifacts/development/Factory.json'
import * as defaultDatatokensABI from '@oceanprotocol/contracts/artifacts/development/DataTokenTemplate.json'
const defaultFactoryABI = require('@oceanprotocol/contracts/artifacts/development/Factory.json')
const defaultDatatokensABI = require('@oceanprotocol/contracts/artifacts/development/DataTokenTemplate.json')
/**
* Provides a interface to DataTokens
@ -27,7 +27,6 @@ export class DataTokens {
web3: any
) {
this.factoryAddress = factoryAddress
this.factoryABI = factoryABI || defaultFactoryABI
this.datatokensABI = datatokensABI || defaultDatatokensABI
this.web3 = web3
@ -41,11 +40,33 @@ export class DataTokens {
*/
public async create(metaDataStoreURI: string, account: Account): Promise<string> {
// Create factory contract object
const tokenAddress = null
const factory = new this.web3.eth.Contract(this.factoryABI, this.factoryAddress, {
from: account
})
// TODO:
const factory = new this.web3.eth.Contract(
this.factoryABI,
this.factoryAddress,
{
from: account
}
)
const estGas = await factory.methods
.createToken(metaDataStoreURI)
.estimateGas(function(err, estGas){
return estGas
})
// Invoke createToken function of the contract
const trxReceipt = await factory.methods
.createToken(metaDataStoreURI)
.send({
from: account,
gas: estGas+1,
gasPrice: '3000000000'
})
let tokenAddress = null
try {
tokenAddress = trxReceipt.events.TokenCreated.returnValues[0]
} catch (e) {
console.error(e)
}
return tokenAddress
}

File diff suppressed because one or more lines are too long

12
test/unit/.mocharc.json Normal file
View File

@ -0,0 +1,12 @@
{
"require": [
"ts-node/register",
"source-map-support/register",
"mock-local-storage"
],
"full-trace": true,
"bail": true,
"exit": true,
"timeout": 20000,
"file": ["test/unit/tsconfig.json", "test/unit/DataTokens.test.ts"]
}

View File

@ -1,12 +1,14 @@
import { assert } from 'chai'
import { TestContractHandler } from '../TestContractHandler'
import { DataTokens } from '../../src/datatokens/Datatokens'
import Web3 from 'web3'
const factory = require('@oceanprotocol/contracts/artifacts/development/Factory.json')
const datatokensTemplate = require('@oceanprotocol/contracts/artifacts/development/DataTokenTemplate.json')
const Web3 = require('web3')
const web3 = new Web3("http://127.0.0.1:8545")
const factoryABI = require('../../src/datatokens/FactoryABI.json')
const datatokensABI = require('../../src/datatokens/DatatokensABI.json')
describe('DataTokens', () => {
@ -16,46 +18,55 @@ describe('DataTokens', () => {
let contracts
let datatoken
let tokenAddress
let tokenAmount = 100
let blob = 'https://example.com/dataset-1'
describe('#test', () => {
it('should deploy contracts', async () => {
contracts = new TestContractHandler(factoryABI,datatokensABI)
it('#deploy', async () => {
contracts = new TestContractHandler(
factory.abi,
datatokensTemplate.abi,
datatokensTemplate.bytecode,
factory.bytecode
)
await contracts.getAccounts()
minter = contracts.accounts[0]
spender = contracts.accounts[1]
await contracts.deployContracts(minter)
})
it('should create Datatoken object', async () => {
datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3)
it('#init', async () => {
datatoken = new DataTokens(
contracts.factoryAddress,
factory.abi,
datatokensTemplate.abi,
web3
)
assert(datatoken !== null)
})
it('should create Datatoken contract', async () => {
it('#create', async () => {
tokenAddress = await datatoken.create(blob, minter)
assert(tokenAddress !== null)
})
it('should mint Datatokens', async () => {
it('#mint', async () => {
await datatoken.mint(tokenAddress, minter, tokenAmount)
balance = await datatoken.balance(tokenAddress, minter)
assert(balance.toString() === tokenAmount.toString())
})
it('should transfer Datatokens to spender', async () => {
it('#transfer', async () => {
await datatoken.transfer(tokenAddress, spender, tokenAmount, minter)
balance = await datatoken.balance(tokenAddress, spender)
assert(balance.toString() === tokenAmount.toString())
})
it('should approve Datatokens to spend', async () => {
it('#approve', async () => {
await datatoken.approve(tokenAddress, minter, tokenAmount, spender)
})
it('should transferFrom Datatokens back to the minter', async () => {
it('#transferFrom', async () => {
await datatoken.transferFrom(tokenAddress, spender, tokenAmount, minter)
minter = await datatoken.balance(tokenAddress, spender)
assert(balance.toString() === tokenAmount.toString())