diff options
-rw-r--r-- | package.json | 23 | ||||
-rw-r--r-- | src/globals.d.ts | 1 | ||||
-rw-r--r-- | test/0x.js_test.ts | 2 | ||||
-rw-r--r-- | test/contract_wrapper_test.ts | 25 | ||||
-rw-r--r-- | webpack.config.js | 14 |
5 files changed, 39 insertions, 26 deletions
diff --git a/package.json b/package.json index f86d17224..fc2589ee0 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,27 @@ "exchange" ], "scripts": { - "clean": "shx rm -rf _bundles lib", - "build:bundle": "webpack", - "build:commonjs": "tsc; copyfiles -u 2 ./src/artifacts/*.json ../0x.js/lib/src/artifacts;", - "build": "npm run clean && run-p build:*", + "build": "npm run clean && run-p build:*:prod", "lint": "tslint src/**/*.ts", - "test": "run-s clean build:commonjs && mocha lib/test/**/*_test.js", + "test": "run-s test:commonjs test:umd", "test:coverage": "nyc npm run test --all", + "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", + "testrpc": "testrpc -p 8545 --networkId 50 -m \"concert load couple harbor equip island argue ramp clarify fence smart topic\"", "docs:json": "typedoc --json docs/index.json .", "docs:generate": "typedoc --out docs .", "docs:open": "opn docs/index.html", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", - "testrpc": "testrpc -p 8545 --networkId 50 -m \"concert load couple harbor equip island argue ramp clarify fence smart topic\"" + + "clean": "shx rm -rf _bundles lib test_temp", + "build:dev": "npm run clean && run-p build:*:dev", + "build:umd:dev": "webpack", + "build:umd:prod": "webpack -p", + "build:commonjs:dev": "tsc; copyfiles -u 2 ./src/artifacts/*.json ../0x.js/lib/src/artifacts;", + "run_mocha": "mocha test_temp/test/**/*_test.js", + "test:commonjs": "run-s build:commonjs:dev setup_commonjs run_mocha tear_down", + "test:umd": "run-s build:*:dev setup_umd run_mocha tear_down", + "setup_commonjs": "shx cp -r lib test_temp", + "setup_umd": "shx mkdir -p test_temp/src && shx cp _bundles/* test_temp/src && shx cp -r lib/test test_temp/test", + "tear_down": "shx rm -rf test_temp" }, "config": { "artifacts": "Proxy Exchange TokenRegistry Token Mintable EtherToken" diff --git a/src/globals.d.ts b/src/globals.d.ts index 827164b4c..0f2fe0f2f 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -15,6 +15,7 @@ declare interface Schema { declare namespace Chai { interface Assertion { bignumber: Assertion; + // HACK: In order to comply with chai-as-promised we make eventually a `PromisedAssertion` not an `Assertion` eventually: PromisedAssertion; } } diff --git a/test/0x.js_test.ts b/test/0x.js_test.ts index 6de054437..871e8c727 100644 --- a/test/0x.js_test.ts +++ b/test/0x.js_test.ts @@ -5,7 +5,7 @@ import * as BigNumber from 'bignumber.js'; import ChaiBigNumber = require('chai-bignumber'); import * as Sinon from 'sinon'; import {ZeroEx} from '../src/0x.js'; -import {constants} from '../src/utils/constants'; +import {constants} from './utils/constants'; import {web3Factory} from './utils/web3_factory'; // Use BigNumber chai add-on diff --git a/test/contract_wrapper_test.ts b/test/contract_wrapper_test.ts index 4ff56ea3e..4bfc49374 100644 --- a/test/contract_wrapper_test.ts +++ b/test/contract_wrapper_test.ts @@ -3,21 +3,18 @@ import * as chai from 'chai'; import chaiAsPromised = require('chai-as-promised'); import * as Web3 from 'web3'; import {web3Factory} from './utils/web3_factory'; -import {ExchangeWrapper} from '../src/contract_wrappers/exchange_wrapper'; +import {ZeroEx} from '../src/0x.js'; import {BlockchainLifecycle} from './utils/blockchain_lifecycle'; -import {Web3Wrapper} from './../src/web3_wrapper'; const expect = chai.expect; chai.use(chaiAsPromised); const blockchainLifecycle = new BlockchainLifecycle(); describe('ExchangeWrapper', () => { - let web3Wrapper: Web3Wrapper; - let exchangeWrapper: ExchangeWrapper; + let zeroEx: ZeroEx; before(async () => { const web3 = web3Factory.create(); - web3Wrapper = new Web3Wrapper(web3); - exchangeWrapper = new ExchangeWrapper(web3Wrapper); + zeroEx = new ZeroEx(web3); }); beforeEach(async () => { await blockchainLifecycle.startAsync(); @@ -42,7 +39,7 @@ describe('ExchangeWrapper', () => { r: signature.r, s: signature.s, }; - expect(exchangeWrapper.isValidSignatureAsync(dataHex, malformedSignature, address)) + expect(zeroEx.exchange.isValidSignatureAsync(dataHex, malformedSignature, address)) .to.be.rejected; }); it('r lacks 0x prefix', () => { @@ -52,7 +49,7 @@ describe('ExchangeWrapper', () => { r: malformedR, s: signature.s, }; - expect(exchangeWrapper.isValidSignatureAsync(dataHex, malformedSignature, address)) + expect(zeroEx.exchange.isValidSignatureAsync(dataHex, malformedSignature, address)) .to.be.rejected; }); it('r is too short', () => { @@ -62,7 +59,7 @@ describe('ExchangeWrapper', () => { r: malformedR, s: signature.s.replace('0', 'z'), }; - expect(exchangeWrapper.isValidSignatureAsync(dataHex, malformedSignature, address)) + expect(zeroEx.exchange.isValidSignatureAsync(dataHex, malformedSignature, address)) .to.be.rejected; }); it('s is not hex', () => { @@ -72,26 +69,26 @@ describe('ExchangeWrapper', () => { r: signature.r, s: malformedS, }; - expect(exchangeWrapper.isValidSignatureAsync(dataHex, malformedSignature, address)) + expect(zeroEx.exchange.isValidSignatureAsync(dataHex, malformedSignature, address)) .to.be.rejected; }); }); it('should return false if the data doesn\'t pertain to the signature & address', async () => { - const isValid = await exchangeWrapper.isValidSignatureAsync('0x0', signature, address); + const isValid = await zeroEx.exchange.isValidSignatureAsync('0x0', signature, address); expect(isValid).to.be.false; }); it('should return false if the address doesn\'t pertain to the signature & dataHex', async () => { const validUnrelatedAddress = '0x8b0292B11a196601eD2ce54B665CaFEca0347D42'; - const isValid = await exchangeWrapper.isValidSignatureAsync(dataHex, signature, validUnrelatedAddress); + const isValid = await zeroEx.exchange.isValidSignatureAsync(dataHex, signature, validUnrelatedAddress); expect(isValid).to.be.false; }); it('should return false if the signature doesn\'t pertain to the dataHex & address', async () => { const wrongSignature = Object.assign({}, signature, {v: 28}); - const isValid = await exchangeWrapper.isValidSignatureAsync(dataHex, wrongSignature, address); + const isValid = await zeroEx.exchange.isValidSignatureAsync(dataHex, wrongSignature, address); expect(isValid).to.be.false; }); it('should return true if the signature does pertain to the dataHex & address', async () => { - const isValid = await exchangeWrapper.isValidSignatureAsync(dataHex, signature, address); + const isValid = await zeroEx.exchange.isValidSignatureAsync(dataHex, signature, address); expect(isValid).to.be.true; }); }); diff --git a/webpack.config.js b/webpack.config.js index 67af51f7a..03a7c6cac 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,14 +1,20 @@ /** * This is to generate the umd bundle only */ +const lodash = require('lodash'); const webpack = require('webpack'); const path = require('path'); +const production = process.env.NODE_ENV === 'production'; + +let entry = { + '0x': './src/0x.js.ts', +}; +if (production) { + entry = _.assign({}, entry, {'0x.min': './src/0x.js.ts'}); +} module.exports = { - entry: { - '0x': './src/ts/0x.js.ts', - '0x.min': './src/ts/0x.js.ts' - }, + entry, output: { path: path.resolve(__dirname, '_bundles'), filename: '[name].js', |