token_spec.js
1 /*global describe, config, it, web3*/ 2 const assert = require('assert'); 3 const Token = require('Embark/contracts/Token'); 4 const MyToken = require('Embark/contracts/MyToken'); 5 const MyToken2 = require('Embark/contracts/MyToken2'); 6 const AlreadyDeployedToken = require('Embark/contracts/AlreadyDeployedToken'); 7 const Test = require('Embark/contracts/Test'); 8 const SomeContract = require('Embark/contracts/SomeContract'); 9 10 config({ 11 contracts: { 12 ZAMyLib: {}, 13 SimpleStorage: { 14 args: [100] 15 }, 16 AnotherStorage: { 17 args: ["$SimpleStorage"] 18 }, 19 Token: { 20 deploy: false, 21 args: [1000] 22 }, 23 MyToken: { 24 instanceOf: "Token" 25 }, 26 MyToken2: { 27 instanceOf: "Token", 28 args: [2000] 29 }, 30 AlreadyDeployedToken: { 31 address: "0xCAFECAFECAFECAFECAFECAFECAFECAFECAFECAFE", 32 instanceOf: "Token" 33 }, 34 Test: { 35 onDeploy: ["Test.methods.changeAddress('$MyToken').send()", "Test.methods.changeENS('embark.eth').send()"] 36 }, 37 ContractArgs: { 38 args: { 39 initialValue: 123, 40 _addresses: ["$MyToken2", "$SimpleStorage"] 41 } 42 }, 43 SomeContract: { 44 deployIf: "await MyToken.methods.isAvailable().call()", 45 args: [ 46 ["$MyToken2", "$SimpleStorage"], 47 100 48 ] 49 } 50 } 51 }); 52 53 describe("Token", function () { 54 this.timeout(0); 55 56 it("not deploy Token", function () { 57 assert.strictEqual(Token.address, undefined); 58 }); 59 60 it("should deploy MyToken and MyToken2", function () { 61 assert.ok(MyToken.options.address); 62 assert.ok(MyToken2.options.address); 63 }); 64 65 it("set MyToken Balance correctly", async function () { 66 let result = await MyToken.methods._supply().call(); 67 assert.strictEqual(parseInt(result, 10), 1000); 68 }); 69 70 it("set MyToken2 Balance correctly", async function () { 71 let result = await MyToken2.methods._supply().call(); 72 assert.strictEqual(parseInt(result, 10), 2000); 73 }); 74 75 it("get right address", function () { 76 assert.strictEqual(AlreadyDeployedToken.options.address.toLowerCase(), 77 "0xCAFECAFECAFECAFECAFECAFECAFECAFECAFECAFE".toLowerCase()); 78 }); 79 80 it("should use onDeploy", async function () { 81 let result = await Test.methods.addr().call(); 82 assert.strictEqual(result, MyToken.options.address); 83 }); 84 85 it("should not deploy if deployIf returns false", function() { 86 assert.ok(!SomeContract.options.address); 87 }); 88 89 it("should set the ens attr to the address of embark.eth", async function() { 90 let result = await Test.methods.ens().call(); 91 // Testing that it is an address as we don't really know the address 92 assert.strictEqual(web3.utils.isAddress(result), true); 93 assert.notStrictEqual(result, '0x0000000000000000000000000000000000000000'); 94 }); 95 });