@gnosis.pm/truffle-nice-tools
Version:
A set CLI tools that make truffle development feel more elegant.
80 lines (67 loc) • 3.69 kB
JavaScript
const { assert } = require('chai')
const fs = require('fs-extra')
const path = require('path')
const _ = require('lodash')
const { withFixture, assertSpawnSync, assertFailingSpawnSync } = require('./utils')
describe('network tools', function () {
it('should extract empty network info from build artifacts containing no network info', function () {
withFixture('basic-truffle-project', (dir) => {
assertSpawnSync('truffle', ['compile'], { cwd: dir })
assertSpawnSync('tnt', ['eN'], { cwd: dir })
const networksObj = fs.readJSONSync(path.join(dir, 'networks.json'))
assert.deepStrictEqual(networksObj, {})
})
})
it('should extract network info from build artifacts', function () {
withFixture('basic-truffle-project', (dir) => {
assertSpawnSync('run-with-testrpc', ['-d', '-i', '123', 'truffle migrate --network local'], { cwd: dir })
assertSpawnSync('run-with-testrpc', ['-m', '莱 既 茶 忙 瓦 穷 轻 添 斤 焦 农 如 详 亡 扰', '-i', '999', 'truffle migrate --network local'], { cwd: dir })
assertSpawnSync('tnt', ['eN'], { cwd: dir })
const networksObj = fs.readJSONSync(path.join(dir, 'networks.json'))
assert.nestedPropertyVal(networksObj, 'Migrations.123.address', '0xe78a0f7e598cc8b0bb87894b0f60dd2a88d6a8ab')
assert.nestedPropertyVal(networksObj, 'Migrations.999.address', '0xa3c98bf4d4a7ef073ad47ac4376ae03fb5239523')
assert.nestedPropertyVal(networksObj, 'BasicThing.123.address', '0xcfeb869f69431e42cdb54a4f4f105c19c080a601')
assert.nestedPropertyVal(networksObj, 'BasicThing.999.address', '0x037146f506c2e0a0b3d341d10a9adcc52d6a4d27')
})
})
it('should fail to inject network info when networks.json does not exist', function () {
withFixture('basic-truffle-project', (dir) => {
assertFailingSpawnSync('tnt', ['iN'], { cwd: dir })
})
})
it('should fail to inject network info when build artifacts do not exist', function () {
withFixture('basic-truffle-project', (dir) => {
const sampleNetworks = {
Migrations: { '9000': { address: '0x1234567890abcdef1234567890abcdef12345678' } },
BasicThing: { '9000': { address: '0xcafecafecafecafecafecafecafecafecafecafe' } },
}
fs.writeJSONSync(path.join(dir, 'networks.json'), sampleNetworks)
assertFailingSpawnSync('tnt', ['iN'], { cwd: dir })
})
})
it('should inject empty network info (do nothing) when networks.json contains {}', function () {
withFixture('basic-truffle-project', (dir) => {
fs.writeJSONSync(path.join(dir, 'networks.json'), {})
assertSpawnSync('tnt', ['iN'], { cwd: dir })
})
})
it('should inject network info into build artifacts', function () {
withFixture('basic-truffle-project', (dir) => {
const sampleNetworks = {
Migrations: { '9000': { address: '0x1234567890abcdef1234567890abcdef12345678' } },
BasicThing: { '9000': { address: '0xcafecafecafecafecafecafecafecafecafecafe' } },
}
fs.writeJSONSync(path.join(dir, 'networks.json'), sampleNetworks)
assertSpawnSync('truffle', ['compile'], { cwd: dir })
for(const contractName of ['Migrations', 'BasicThing']) {
const artifact = fs.readJSONSync(path.join(dir, 'build', 'contracts', `${contractName}.json`))
assert.deepStrictEqual(artifact.networks, {})
}
assertSpawnSync('tnt', ['iN'], { cwd: dir })
for(const contractName of ['Migrations', 'BasicThing']) {
const artifact = fs.readJSONSync(path.join(dir, 'build', 'contracts', `${contractName}.json`))
assert.deepStrictEqual(artifact.networks, sampleNetworks[contractName])
}
})
})
})