From b93cf97490acd178d36d31933e359cd565376df9 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Fri, 3 May 2019 16:59:53 +0100 Subject: [PATCH 01/12] Fix comment grammar --- packages/tasit-action/src/contract/Action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasit-action/src/contract/Action.js b/packages/tasit-action/src/contract/Action.js index bac4ddf3..adfbc9ec 100644 --- a/packages/tasit-action/src/contract/Action.js +++ b/packages/tasit-action/src/contract/Action.js @@ -211,7 +211,7 @@ export class Action extends Subscription { // this solution should be improved with a state structure identifying state per event // // Question: - // Is possible that behavior (listener concurrency calls for the same event) be desirable? + // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? const ethersListener = async blockNumber => { if (this.#isRunning) { console.info(`Listener is already running`); From e757c06e7678b11beb21b53f0c57aae82e330c69 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Fri, 3 May 2019 17:04:40 +0100 Subject: [PATCH 02/12] Removing unnecessary off --- packages/tasit-action/src/contract/Contract.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/tasit-action/src/contract/Contract.test.js b/packages/tasit-action/src/contract/Contract.test.js index 7a700569..02d7f482 100644 --- a/packages/tasit-action/src/contract/Contract.test.js +++ b/packages/tasit-action/src/contract/Contract.test.js @@ -159,8 +159,6 @@ describe("TasitAction.Contract", () => { const contractErrorListener = sinon.fake(error => { const { message } = error; console.info(message); - - sampleContract.off("error"); }); sampleContract.on("error", contractErrorListener); From c76bcd4922d84ce3f50c32781b2609eda8dd780c Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Fri, 3 May 2019 17:23:26 +0100 Subject: [PATCH 03/12] Avoid simultaneously listener on Contract --- .../tasit-action/src/contract/Contract.js | 27 ++++++++- packages/tasit-sdk/src/Decentraland.test.js | 56 ++++++++++++++----- 2 files changed, 67 insertions(+), 16 deletions(-) diff --git a/packages/tasit-action/src/contract/Contract.js b/packages/tasit-action/src/contract/Contract.js index eff31d44..02c2b780 100644 --- a/packages/tasit-action/src/contract/Contract.js +++ b/packages/tasit-action/src/contract/Contract.js @@ -14,6 +14,7 @@ ethers.errors.setLogLevel("error"); export class Contract extends Subscription { #provider; #ethersContract; + #isRunning = false; constructor(address, abi, wallet) { if (!Utils.isAddress(address) || !Utils.isABI(abi)) @@ -101,7 +102,7 @@ export class Contract extends Subscription { }; #addContractEventListener = (eventName, listener, once) => { - const ethersListener = async (...args) => { + const baseEthersListener = async (...args) => { try { // Note: This depends on the current ethers.js specification of ethersContract events to work: // "All event callbacks receive the parameters specified in the ABI as well as @@ -128,6 +129,30 @@ export class Contract extends Subscription { } }; + // Note: + // On the development env (using ganache-cli) + // Blocks are being mined simultaneously and generating a sort of unexpected behaviors like: + // - once listeners called many times + // - sequential blocks giving same confirmation to a transaction + // - false-positive reorg event emission + // - collaborating for tests non-determinism + // + // Tech debt: + // See if there is another way to avoid these problems, if not + // this solution should be improved with a state structure identifying state per event + // + // Question: + // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? + const ethersListener = async (...args) => { + if (this.#isRunning) { + console.info(`Listener is already running`); + return; + } + this.#isRunning = true; + await baseEthersListener(...args); + this.#isRunning = false; + }; + this._addEventListener(eventName, ethersListener); }; diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index d54ad9eb..1fbf0507 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -215,7 +215,42 @@ describe("Decentraland", () => { })(); }); - it("should buy an estate", done => { + it("should buy an estate - using action events", done => { + (async () => { + const { assetId, nftAddress, priceInWei } = estateForSale; + + await checkAsset(estate, mana, estateForSale, ephemeralAddress); + + await expectExactTokenBalances(estate, [ephemeralAddress], [0]); + + const fingerprint = await estate.getFingerprint(`${assetId}`); + + marketplace.setWallet(ephemeralWallet); + const executeOrderAction = marketplace.safeExecuteOrder( + nftAddress, + `${assetId}`, + `${priceInWei}`, + `${fingerprint}` + ); + + const confirmationListener = async () => { + await expectExactTokenBalances(estate, [ephemeralAddress], [1]); + done(); + }; + + const errorListener = error => { + marketplace.off("error"); + done(error); + }; + + executeOrderAction.once("confirmation", confirmationListener); + executeOrderAction.on("error", errorListener); + + executeOrderAction.send(); + })(); + }); + + it("should buy an estate - using contract events", done => { (async () => { const { assetId, nftAddress, priceInWei } = estateForSale; @@ -233,34 +268,25 @@ describe("Decentraland", () => { `${fingerprint}` ); - // eslint-disable-next-line no-unused-vars const orderSuccessfulListener = async message => { const { data } = message; const { args } = data; const { buyer } = args; - + marketplace.off("error"); expect(buyer).to.equal(ephemeralAddress); await expectExactTokenBalances(estate, [ephemeralAddress], [1]); - - done(); - }; - - const confirmationListener = async () => { - await expectExactTokenBalances(estate, [ephemeralAddress], [1]); done(); }; const errorListener = error => { + const { message } = error; + console.warn(message); marketplace.off("error"); done(error); }; - // Note: These listeners aren't working properly - // See more: https://github.com/tasitlabs/TasitSDK/issues/367 - //marketplace.once("OrderSuccessful", orderSuccessfulListener); - //marketplace.on("error", errorListener); - executeOrderAction.once("confirmation", confirmationListener); - executeOrderAction.on("error", errorListener); + marketplace.once("OrderSuccessful", orderSuccessfulListener); + marketplace.on("error", errorListener); executeOrderAction.send(); })(); From beb95ea2a44f4f592a35ed2d93652db4e8697fdb Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Fri, 3 May 2019 17:51:48 +0100 Subject: [PATCH 04/12] Pulling up isRunning and listener concurrency control to Subscription --- packages/tasit-action/src/contract/Action.js | 27 +------------------ .../tasit-action/src/contract/Contract.js | 27 +------------------ .../tasit-action/src/contract/Subscription.js | 27 ++++++++++++++++++- 3 files changed, 28 insertions(+), 53 deletions(-) diff --git a/packages/tasit-action/src/contract/Action.js b/packages/tasit-action/src/contract/Action.js index adfbc9ec..551a11f5 100644 --- a/packages/tasit-action/src/contract/Action.js +++ b/packages/tasit-action/src/contract/Action.js @@ -12,7 +12,6 @@ export class Action extends Subscription { #txConfirmations = 0; #timeout; #lastConfirmationTime; - #isRunning = false; constructor(rawAction, provider, signer) { // Provider implements EventEmitter API and it's enough @@ -124,7 +123,7 @@ export class Action extends Subscription { const eventName = "confirmation"; // eslint-disable-next-line no-unused-vars - const baseEthersListener = async blockNumber => { + const ethersListener = async blockNumber => { try { const tx = await this.#tx; if (!tx) { @@ -198,30 +197,6 @@ export class Action extends Subscription { } }; - // Note: - // On the development env (using ganache-cli) - // Blocks are being mined simultaneously and generating a sort of unexpected behaviors like: - // - once listeners called many times - // - sequential blocks giving same confirmation to a transaction - // - false-positive reorg event emission - // - collaborating for tests non-determinism - // - // Tech debt: - // See if there is another way to avoid these problems, if not - // this solution should be improved with a state structure identifying state per event - // - // Question: - // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? - const ethersListener = async blockNumber => { - if (this.#isRunning) { - console.info(`Listener is already running`); - return; - } - this.#isRunning = true; - await baseEthersListener(blockNumber); - this.#isRunning = false; - }; - this._addEventListener(eventName, ethersListener); }; diff --git a/packages/tasit-action/src/contract/Contract.js b/packages/tasit-action/src/contract/Contract.js index 02c2b780..eff31d44 100644 --- a/packages/tasit-action/src/contract/Contract.js +++ b/packages/tasit-action/src/contract/Contract.js @@ -14,7 +14,6 @@ ethers.errors.setLogLevel("error"); export class Contract extends Subscription { #provider; #ethersContract; - #isRunning = false; constructor(address, abi, wallet) { if (!Utils.isAddress(address) || !Utils.isABI(abi)) @@ -102,7 +101,7 @@ export class Contract extends Subscription { }; #addContractEventListener = (eventName, listener, once) => { - const baseEthersListener = async (...args) => { + const ethersListener = async (...args) => { try { // Note: This depends on the current ethers.js specification of ethersContract events to work: // "All event callbacks receive the parameters specified in the ABI as well as @@ -129,30 +128,6 @@ export class Contract extends Subscription { } }; - // Note: - // On the development env (using ganache-cli) - // Blocks are being mined simultaneously and generating a sort of unexpected behaviors like: - // - once listeners called many times - // - sequential blocks giving same confirmation to a transaction - // - false-positive reorg event emission - // - collaborating for tests non-determinism - // - // Tech debt: - // See if there is another way to avoid these problems, if not - // this solution should be improved with a state structure identifying state per event - // - // Question: - // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? - const ethersListener = async (...args) => { - if (this.#isRunning) { - console.info(`Listener is already running`); - return; - } - this.#isRunning = true; - await baseEthersListener(...args); - this.#isRunning = false; - }; - this._addEventListener(eventName, ethersListener); }; diff --git a/packages/tasit-action/src/contract/Subscription.js b/packages/tasit-action/src/contract/Subscription.js index 158620b5..be8ca4f5 100644 --- a/packages/tasit-action/src/contract/Subscription.js +++ b/packages/tasit-action/src/contract/Subscription.js @@ -1,6 +1,7 @@ export class Subscription { #ethersEventEmitter; #eventListeners = new Map(); + #isRunning = false; constructor(eventEmitter) { this.#ethersEventEmitter = eventEmitter; @@ -109,7 +110,7 @@ export class Subscription { }; // TODO: Make protected - _addEventListener = (eventName, listener) => { + _addEventListener = (eventName, baseListener) => { if (eventName === "error") throw new Error( `Use _addErrorListener function to subscribe to an error event.` @@ -120,6 +121,30 @@ export class Subscription { `A listener for event '${eventName}' is already registered.` ); + // Note: + // On the development env (using ganache-cli) + // Blocks are being mined simultaneously and generating a sort of unexpected behaviors like: + // - once listeners called many times + // - sequential blocks giving same confirmation to a transaction + // - false-positive reorg event emission + // - collaborating for tests non-determinism + // + // Tech debt: + // See if there is another way to avoid these problems, if not + // this solution should be improved with a state structure identifying state per event + // + // Question: + // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? + const listener = async (...args) => { + if (this.#isRunning) { + console.info(`Listener is already running`); + return; + } + this.#isRunning = true; + await baseListener(...args); + this.#isRunning = false; + }; + this.#eventListeners.set(eventName, { listener, }); From dc003ae3ed9dc7b769f42f4e92d69b67da0f701a Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Fri, 3 May 2019 19:16:31 +0100 Subject: [PATCH 05/12] WIP --- package.json | 4 ++-- packages/tasit-action/src/contract/Subscription.js | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index b0c13c09..8dd87747 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "ganache:stop": "kill `ps ax|grep ganache-cli|grep -v grep| awk '{print $1}'` 2> /dev/null; exit 0", "truffle:migrate": "npx lerna run migrate --scope tasit-contracts --stream", "prepare:blockchain": "npm run ganache:stop && npm run ganache:start && npm run truffle:migrate", - "pretest": "npm run prepare:blockchain", - "test": "npm run lint && npx lerna run test --stream --concurrency 1", + "pretest": "npm run prepare:blockchain && npm run lint", + "test": "npx lerna run test --stream --concurrency 1", "posttest": "npm run ganache:stop", "start": "npm run clean:all && npm run bootstrap && npm run prepare:blockchain", "lint": "npx prettier --write './packages/*/src/{*.js,**/*.js}' && npx eslint './packages/*/src/{*.js,**/*.js}'" diff --git a/packages/tasit-action/src/contract/Subscription.js b/packages/tasit-action/src/contract/Subscription.js index be8ca4f5..e1874982 100644 --- a/packages/tasit-action/src/contract/Subscription.js +++ b/packages/tasit-action/src/contract/Subscription.js @@ -39,9 +39,7 @@ export class Subscription { return; } - const { listener } = eventListener; - - this.#eventListeners.set(eventName, { listener, timer }); + this.#eventListeners.set(eventName, { ...eventListener, timer }); }; // TODO: Make protected @@ -145,9 +143,10 @@ export class Subscription { this.#isRunning = false; }; - this.#eventListeners.set(eventName, { - listener, - }); + console.log("Important TODO: Use map to store isRunning state"); + const eventListener = { listener, isRunning: false }; + + this.#eventListeners.set(eventName, eventListener); this.#ethersEventEmitter.on(this._toEthersEventName(eventName), listener); }; From cfe44a914b5d00e03c38aba1a2e14af091b45653 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Tue, 7 May 2019 14:27:17 +0100 Subject: [PATCH 06/12] EventListener running state on Map --- .../tasit-action/src/contract/Subscription.js | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/tasit-action/src/contract/Subscription.js b/packages/tasit-action/src/contract/Subscription.js index e1874982..426adbe6 100644 --- a/packages/tasit-action/src/contract/Subscription.js +++ b/packages/tasit-action/src/contract/Subscription.js @@ -1,7 +1,6 @@ export class Subscription { #ethersEventEmitter; #eventListeners = new Map(); - #isRunning = false; constructor(eventEmitter) { this.#ethersEventEmitter = eventEmitter; @@ -32,14 +31,7 @@ export class Subscription { // TODO: Make protected _setEventTimer = (eventName, timer) => { - const eventListener = this.#eventListeners.get(eventName); - - if (!eventListener) { - console.warn(`A listener for event '${eventName}' isn't registered.`); - return; - } - - this.#eventListeners.set(eventName, { ...eventListener, timer }); + this.#decorateEventListener(eventName, { timer }); }; // TODO: Make protected @@ -92,8 +84,9 @@ export class Subscription { // If there is a error event already, it will be replaced by new listener function // that will call both new and old functions _addErrorListener = newListener => { + const eventName = "error"; let listener = newListener; - const oldErrorEventListener = this.#eventListeners.get("error"); + const oldErrorEventListener = this.#eventListeners.get(eventName); if (oldErrorEventListener) { listener = error => { @@ -102,7 +95,7 @@ export class Subscription { }; } - this.#eventListeners.set("error", { + this.#eventListeners.set(eventName, { listener, }); }; @@ -128,22 +121,24 @@ export class Subscription { // - collaborating for tests non-determinism // // Tech debt: - // See if there is another way to avoid these problems, if not - // this solution should be improved with a state structure identifying state per event + // See if there is another way to avoid these problems // // Question: // Is it possible that that behavior (listener concurrent calls for the same event) is desirable? const listener = async (...args) => { - if (this.#isRunning) { + const eventListener = this.#eventListeners.get(eventName); + const { isRunning } = eventListener; + + if (isRunning) { console.info(`Listener is already running`); return; } - this.#isRunning = true; + + this.#decorateEventListener(eventName, { isRunning: true }); await baseListener(...args); - this.#isRunning = false; + this.#decorateEventListener(eventName, { isRunning: false }); }; - console.log("Important TODO: Use map to store isRunning state"); const eventListener = { listener, isRunning: false }; this.#eventListeners.set(eventName, eventListener); @@ -155,6 +150,19 @@ export class Subscription { getEmitter = () => { return this.#ethersEventEmitter; }; + + #decorateEventListener = (eventName, newArgs) => { + let eventListener = this.#eventListeners.get(eventName); + + if (!eventListener) { + console.warn(`A listener for event '${eventName}' isn't registered.`); + return; + } + + eventListener = { ...eventListener, ...newArgs }; + + this.#eventListeners.set(eventName, eventListener); + }; } export default Subscription; From da77c1bd125e517ad1aeb0c1ea12f9bbb2f9fe40 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Tue, 7 May 2019 14:39:34 +0100 Subject: [PATCH 07/12] Non-deterministic --- .../src/erc721/ERC721Full.test.js | 5 +- packages/tasit-sdk/src/Decentraland.test.js | 51 ++++++++++++++----- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/packages/tasit-action/src/erc721/ERC721Full.test.js b/packages/tasit-action/src/erc721/ERC721Full.test.js index 18367f7c..954719d6 100644 --- a/packages/tasit-action/src/erc721/ERC721Full.test.js +++ b/packages/tasit-action/src/erc721/ERC721Full.test.js @@ -139,10 +139,7 @@ describe("TasitAction.ERC721.ERC721Full", () => { await expectExactTokenBalances(erc721, [ana.address], [1]); }); - // Non-deterministic - // Enable again after solve this isse: - // https://github.com/tasitlabs/TasitSDK/issues/367 - it.skip("should transfer an owned token", async () => { + it("should transfer an owned token", async () => { erc721 = new ERC721Full(ERC721_FULL_ADDRESS, ana); const transferListener = sinon.fake(message => { diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index 1fbf0507..edbbd16a 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -292,7 +292,42 @@ describe("Decentraland", () => { })(); }); - it("should buy a parcel of land", done => { + it("should buy a parcel of land - using action events", done => { + (async () => { + const { assetId, nftAddress, priceInWei } = landForSale; + + await checkAsset(land, mana, landForSale, ephemeralAddress); + + await expectExactTokenBalances(land, [ephemeralAddress], [0]); + + // LANDRegistry contract doesn't implement getFingerprint function + const fingerprint = "0x"; + marketplace.setWallet(ephemeralWallet); + const executeOrderAction = marketplace.safeExecuteOrder( + nftAddress, + `${assetId}`, + `${priceInWei}`, + `${fingerprint}` + ); + + const confirmationListener = async () => { + await expectExactTokenBalances(land, [ephemeralAddress], [1]); + done(); + }; + + const errorListener = error => { + marketplace.off("error"); + done(error); + }; + + executeOrderAction.once("confirmation", confirmationListener); + executeOrderAction.on("error", errorListener); + + executeOrderAction.send(); + })(); + }); + + it("should buy a parcel of land - using contract events", done => { (async () => { const { assetId, nftAddress, priceInWei } = landForSale; @@ -310,7 +345,6 @@ describe("Decentraland", () => { `${fingerprint}` ); - // eslint-disable-next-line no-unused-vars const orderSuccessfulListener = async message => { const { data } = message; const { args } = data; @@ -322,22 +356,13 @@ describe("Decentraland", () => { done(); }; - const confirmationListener = async () => { - await expectExactTokenBalances(land, [ephemeralAddress], [1]); - done(); - }; - const errorListener = error => { marketplace.off("error"); done(error); }; - // Note: These listeners aren't working properly - // See more: https://github.com/tasitlabs/TasitSDK/issues/367 - // marketplace.once("OrderSuccessful", orderSuccessfulListener); - // marketplace.on("error", errorListener); - executeOrderAction.once("confirmation", confirmationListener); - executeOrderAction.on("error", errorListener); + marketplace.once("OrderSuccessful", orderSuccessfulListener); + marketplace.on("error", errorListener); executeOrderAction.send(); })(); From a915df985b199962f0c00d5284a7f474c60e11e2 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Tue, 7 May 2019 14:41:45 +0100 Subject: [PATCH 08/12] Non-determinism --- packages/tasit-action/src/contract/Contract.test.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/tasit-action/src/contract/Contract.test.js b/packages/tasit-action/src/contract/Contract.test.js index 02d7f482..50805ed1 100644 --- a/packages/tasit-action/src/contract/Contract.test.js +++ b/packages/tasit-action/src/contract/Contract.test.js @@ -470,9 +470,7 @@ describe("TasitAction.Contract", () => { // new difficultywise-longest well-formed blockchain which excludes one or more blocks that // the client previously thought were part of the difficultywise-longest well-formed blockchain. // These excluded blocks become orphans. - // - // Non-deterministic - it.skip("should emit error event when block reorganization occurs - tx confirmed twice", async () => { + it("should emit error event when block reorganization occurs - tx confirmed twice", async () => { const confirmationListener = sinon.fake(); const errorFn = sinon.fake(); @@ -531,8 +529,7 @@ describe("TasitAction.Contract", () => { expect(actionId).to.have.lengthOf(66); }); - // Non-deterministic - it.skip("should be able to listen to an event before sending", async () => { + it("should be able to listen to an event before sending", async () => { const confirmationListener = sinon.fake(async () => { action.off("confirmation"); }); From 7389c2e70951bed6e7a8460159b37406c7694871 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Tue, 7 May 2019 17:46:42 +0100 Subject: [PATCH 09/12] Fix testing --- packages/tasit-sdk/src/Decentraland.test.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index edbbd16a..fad93511 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -234,12 +234,13 @@ describe("Decentraland", () => { ); const confirmationListener = async () => { + executeOrderAction.off("error"); await expectExactTokenBalances(estate, [ephemeralAddress], [1]); done(); }; const errorListener = error => { - marketplace.off("error"); + executeOrderAction.off("error"); done(error); }; @@ -311,12 +312,13 @@ describe("Decentraland", () => { ); const confirmationListener = async () => { + executeOrderAction.off("error"); await expectExactTokenBalances(land, [ephemeralAddress], [1]); done(); }; const errorListener = error => { - marketplace.off("error"); + executeOrderAction.off("error"); done(error); }; @@ -352,7 +354,7 @@ describe("Decentraland", () => { expect(buyer).to.equal(ephemeralAddress); await expectExactTokenBalances(land, [ephemeralAddress], [1]); - + marketplace.off("error"); done(); }; From f9ca060a8397a7e2bce1a3e24d5a6e8576954b51 Mon Sep 17 00:00:00 2001 From: cmarcelo Date: Tue, 7 May 2019 18:00:24 +0100 Subject: [PATCH 10/12] Improve comments --- packages/tasit-sdk/src/Decentraland.test.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index fad93511..986266d3 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -704,6 +704,8 @@ describe("Decentraland", () => { const confirmationListener = async () => { // WIP: Not working because of gas issue on Marketplace.safeExecuteOrder() call + // + // When that issue was solved, the correct expectation is having balance equals 1 instead of 0 //await expectExactTokenBalances(estate, [GNOSIS_SAFE_ADDRESS], [1]); await expectExactTokenBalances( estate, @@ -773,6 +775,8 @@ describe("Decentraland", () => { const confirmationListener = async () => { // WIP: Not working because of gas issue on Marketplace.safeExecuteOrder() call //await expectExactTokenBalances(land, [GNOSIS_SAFE_ADDRESS], [1]); + // + // When that issue was solved, the correct expectation is having balance equals 1 instead of 0 await expectExactTokenBalances(land, [GNOSIS_SAFE_ADDRESS], [0]); done(); }; @@ -933,7 +937,6 @@ describe("Decentraland", () => { // See more: https://github.com/tasitlabs/TasitSDK/issues/273 //await expectExactTokenBalances(estate, [ephemeralAddress], [1]); await expectExactTokenBalances(estate, [ephemeralAddress], [0]); - done(); }; const errorListener = error => { @@ -982,7 +985,6 @@ describe("Decentraland", () => { // See more: https://github.com/tasitlabs/TasitSDK/issues/273 //await expectExactTokenBalances(land, [ephemeralAddress], [1]); await expectExactTokenBalances(land, [ephemeralAddress], [0]); - done(); }; const errorListener = error => { From 70875e07a067f354e40a7b4ccdd96e8730ba1d31 Mon Sep 17 00:00:00 2001 From: Paul Cowgill Date: Tue, 7 May 2019 14:01:56 -0500 Subject: [PATCH 11/12] Grammar --- packages/tasit-sdk/src/Decentraland.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index 986266d3..6770adb3 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -705,7 +705,7 @@ describe("Decentraland", () => { const confirmationListener = async () => { // WIP: Not working because of gas issue on Marketplace.safeExecuteOrder() call // - // When that issue was solved, the correct expectation is having balance equals 1 instead of 0 + // When that issue was solved, the correct expectation is having balance equal 1 instead of 0 //await expectExactTokenBalances(estate, [GNOSIS_SAFE_ADDRESS], [1]); await expectExactTokenBalances( estate, From ca7b7190cd6cf962ab0e9176831d0bb2b875b33c Mon Sep 17 00:00:00 2001 From: Paul Cowgill Date: Tue, 7 May 2019 14:02:03 -0500 Subject: [PATCH 12/12] Grammar --- packages/tasit-sdk/src/Decentraland.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tasit-sdk/src/Decentraland.test.js b/packages/tasit-sdk/src/Decentraland.test.js index 6770adb3..bcef8e9b 100644 --- a/packages/tasit-sdk/src/Decentraland.test.js +++ b/packages/tasit-sdk/src/Decentraland.test.js @@ -776,7 +776,7 @@ describe("Decentraland", () => { // WIP: Not working because of gas issue on Marketplace.safeExecuteOrder() call //await expectExactTokenBalances(land, [GNOSIS_SAFE_ADDRESS], [1]); // - // When that issue was solved, the correct expectation is having balance equals 1 instead of 0 + // When that issue was solved, the correct expectation is having balance equal 1 instead of 0 await expectExactTokenBalances(land, [GNOSIS_SAFE_ADDRESS], [0]); done(); };