mirror of
https://github.com/oceanprotocol-archive/squid-js.git
synced 2024-02-02 15:31:51 +01:00
Add ownerAssets method to assets module.
This commit is contained in:
parent
652d4e7575
commit
47ced8af1b
@ -6,10 +6,11 @@ import { getMetadata } from "../utils"
|
|||||||
|
|
||||||
import { Ocean, Account } from "../../src" // @oceanprotocol/squid
|
import { Ocean, Account } from "../../src" // @oceanprotocol/squid
|
||||||
|
|
||||||
describe("Asset Owners", () => {
|
describe.only("Asset Owners", () => {
|
||||||
let ocean: Ocean
|
let ocean: Ocean
|
||||||
|
|
||||||
let publisher: Account
|
let account1: Account
|
||||||
|
let account2: Account
|
||||||
|
|
||||||
const metadata = getMetadata()
|
const metadata = getMetadata()
|
||||||
|
|
||||||
@ -17,15 +18,29 @@ describe("Asset Owners", () => {
|
|||||||
ocean = await Ocean.getInstance(config)
|
ocean = await Ocean.getInstance(config)
|
||||||
|
|
||||||
// Accounts
|
// Accounts
|
||||||
publisher = (await ocean.accounts.list())[0]
|
const accounts = await ocean.accounts.list()
|
||||||
publisher.setPassword(process.env.ACCOUNT_PASSWORD)
|
account1 = accounts[0]
|
||||||
|
account2 = accounts[1]
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should be set correctly the owner of a asset", async () => {
|
it("should be set correctly the owner of a asset", async () => {
|
||||||
const ddo = await ocean.assets.create(metadata as any, publisher)
|
const ddo = await ocean.assets.create(metadata as any, account1)
|
||||||
|
|
||||||
const owner = await ocean.assets.owner(ddo.id)
|
const owner = await ocean.assets.owner(ddo.id)
|
||||||
|
|
||||||
assert.equal(owner, publisher.getId())
|
assert.equal(owner, account1.getId())
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should get the assets owned by a user", async () => {
|
||||||
|
const {length: initialLength} = await ocean.assets.ownerAssets(account2.getId())
|
||||||
|
|
||||||
|
await ocean.assets.create(metadata as any, account1)
|
||||||
|
await ocean.assets.create(metadata as any, account1)
|
||||||
|
|
||||||
|
await ocean.assets.create(metadata as any, account2)
|
||||||
|
|
||||||
|
const {length: finalLength} = await ocean.assets.ownerAssets(account2.getId())
|
||||||
|
|
||||||
|
assert.equal(finalLength - initialLength, 1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -16,13 +16,21 @@ export default abstract class ContractBase extends Instantiable {
|
|||||||
this.contractName = contractName
|
this.contractName = contractName
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getEventData(eventName: any, options: any) {
|
public async getEventData(eventName: string, options: any) {
|
||||||
if (!this.contract.events[eventName]) {
|
if (!this.contract.events[eventName]) {
|
||||||
throw new Error(`Event "${eventName}" not found on contract "${this.contractName}"`)
|
throw new Error(`Event "${eventName}" not found on contract "${this.contractName}"`)
|
||||||
}
|
}
|
||||||
return this.contract.getPastEvents(eventName, options)
|
return this.contract.getPastEvents(eventName, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getPastEvents(eventName: string, filter: {[key: string]: any}) {
|
||||||
|
return this.getEventData(eventName, {
|
||||||
|
filter,
|
||||||
|
fromBlock: 0,
|
||||||
|
toBlock: "latest",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
public getAddress(): string {
|
public getAddress(): string {
|
||||||
return this.contract.options.address
|
return this.contract.options.address
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import Web3Provider from "../Web3Provider"
|
import Web3Provider from "../Web3Provider"
|
||||||
import ContractBase from "./ContractBase"
|
import ContractBase from "./ContractBase"
|
||||||
import { zeroX } from "../../utils"
|
import { zeroX, didPrefixed } from "../../utils"
|
||||||
import { InstantiableConfig } from "../../Instantiable.abstract"
|
import { InstantiableConfig } from "../../Instantiable.abstract"
|
||||||
|
|
||||||
export default class DIDRegistry extends ContractBase {
|
export default class DIDRegistry extends ContractBase {
|
||||||
@ -26,4 +26,10 @@ export default class DIDRegistry extends ContractBase {
|
|||||||
public async getBlockNumberUpdated(did: string): Promise<number> {
|
public async getBlockNumberUpdated(did: string): Promise<number> {
|
||||||
return +await this.call("getBlockNumberUpdated", [zeroX(did)])
|
return +await this.call("getBlockNumberUpdated", [zeroX(did)])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getAttributesByOwner(owner: string): Promise<string[]> {
|
||||||
|
return (await this.getPastEvents('DIDAttributeRegistered', {_owner: zeroX(owner)}))
|
||||||
|
.map(({returnValues}) => returnValues._did)
|
||||||
|
.map(didPrefixed)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -277,6 +277,15 @@ export class OceanAssets extends Instantiable {
|
|||||||
return creator
|
return creator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the assets of a owner.
|
||||||
|
* @param {string} owner Owner address.
|
||||||
|
* @return {Promise<string[]>} List of DIDs.
|
||||||
|
*/
|
||||||
|
public async ownerAssets(owner: string) {
|
||||||
|
return this.ocean.keeper.didRegistry.getAttributesByOwner(owner)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search over the assets using a query.
|
* Search over the assets using a query.
|
||||||
* @param {SearchQuery} query Query to filter the assets.
|
* @param {SearchQuery} query Query to filter the assets.
|
||||||
|
Loading…
Reference in New Issue
Block a user