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 // }) }) })