import { assert } from 'chai' import { config } from '../config' import { Ocean, Account, DDO, MetaData, ComputeJobStatus } from '../../src' // @oceanprotocol/squid import { getMetadata, getComputeServiceExample } from '../utils' describe('Compute', () => { let ocean: Ocean let account: Account let ddoAsset: DDO let ddoAlgorithm: DDO let agreementId: string const metadataAsset = getMetadata() const metadataAlgorithm = getMetadata(0, 'algorithm') const computeServiceExample = getComputeServiceExample() before(async () => { ocean = await Ocean.getInstance(config) ;[account] = await ocean.accounts.list() }) it('should authenticate the consumer account', async () => { await account.authenticate() }) it('should publish a dataset and an algorithm', async () => { const stepsAsset = [] ddoAsset = await ocean.assets .create(metadataAsset as MetaData, account, [computeServiceExample]) .next(step => stepsAsset.push(step)) assert.instanceOf(ddoAsset, DDO) assert.deepEqual(stepsAsset, [0, 1, 2, 3, 4, 5, 6, 7]) const stepsAlgorithm = [] ddoAlgorithm = await ocean.assets .create(metadataAlgorithm as MetaData, account) .next(step => stepsAlgorithm.push(step)) assert.instanceOf(ddoAlgorithm, DDO) assert.deepEqual(stepsAlgorithm, [0, 1, 2, 3, 4, 5, 6, 7]) }) it('should order the compute service', async () => { const steps = [] try { await account.requestTokens( +computeServiceExample.attributes.main.price * 10 ** -(await ocean.keeper.token.decimals()) ) agreementId = await ocean.compute .order(account, ddoAsset.id) .next(step => steps.push(step)) } catch {} assert.isDefined(agreementId) assert.deepEqual(steps, [0, 1, 2, 3]) }) it('should start a compute job', async () => { const response = await ocean.compute.start(account, agreementId, ddoAlgorithm.id) assert.equal(response.status, ComputeJobStatus.Started) }) })