1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00
ocean.js/test/integration/Marketplaceflow.test.ts
2020-06-25 00:18:47 +02:00

115 lines
3.5 KiB
TypeScript

import { TestContractHandler } from '../TestContractHandler'
import { DataTokens } from '../../src/datatokens/Datatokens'
import { Ocean } from '../../src/ocean/Ocean'
import config from './config'
// import Accounts from "../../src/ocean/Account"
const Web3 = require('web3')
const web3 = new Web3('http://127.0.0.1:8545')
const factory = require('@oceanprotocol/contracts/artifacts/development/Factory.json')
const datatokensTemplate = require('@oceanprotocol/contracts/artifacts/development/DataTokenTemplate.json')
describe('Marketplace flow', () => {
let owner
let bob
let alice
let asset
let accounts
let marketplace
let marketOcean
let contracts
let datatoken
let tokenAddress
let transactionId
let service1
let service2
let ocean
const tokenAmount = 100
const transferAmount = 2
const blob = 'http://localhost:8030/api/v1/provider/services'
describe('#test', () => {
it('Initialize Ocean contracts v3', async () => {
contracts = new TestContractHandler(
factory.abi,
datatokensTemplate.abi,
datatokensTemplate.bytecode,
factory.bytecode,
web3
)
ocean = await Ocean.getInstance(config)
owner = (await ocean.accounts.list())[0]
alice = (await ocean.accounts.list())[1]
bob = (await ocean.accounts.list())[2]
marketplace = (await ocean.accounts.list())[3]
await contracts.deployContracts(owner.getId())
})
it('Alice publishes a datatoken contract', async () => {
datatoken = new DataTokens(
contracts.factoryAddress,
factory.abi,
datatokensTemplate.abi,
web3
)
tokenAddress = await datatoken.create(blob, alice.getId())
})
it('Generates metadata', async () => {
asset = {
main: {
type: 'dataset',
name: 'test-dataset',
dateCreated:
new Date(Date.now())
.toISOString()
.split('.')[0] + 'Z', // remove milliseconds
author: 'oceanprotocol-team',
license: 'MIT'
}
}
})
it('Alice publishes a dataset', async () => {
asset = await ocean.assets.create(asset, alice, [], tokenAddress)
})
// it('Alice mints 100 tokens', async () => {
// await datatoken.mint(tokenAddress, alice.getId(), tokenAmount)
// })
// it('Marketplace posts asset for sale', async () => {
// const config = new Config()
// marketOcean = await Ocean.getInstance(config)
// service1 = marketOcean.assets.getService('download')
// service2 = marketOcean.assets.getService('access')
// })
// it('Bob gets datatokens', async () => {
// const ts = await datatoken.transfer(tokenAddress, bob, transferAmount, alice)
// transactionId = ts.transactionHash
// })
// it('Bob consumes asset 1', async () => {
// const config = new Config()
// const ocean = await Ocean.getInstance(config)
// await ocean.assets.download(asset.did, service1.index, bob, '~/my-datasets')
// })
// it('Bob consumes asset 2', async () => {
// // TODO
// })
})
})