From 65ebff056ae9ee1cba3761924fed9fee19e2bfbb Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Wed, 25 Feb 2015 17:43:33 -0800 Subject: [PATCH] refactor(benchpress): make tests for error cases also work in Dart Also introduces `PromiseWrapper.catchError`. Could not use `PromiseWrapper.catch` as a name as Dart would not allow this method name. --- modules/angular2/src/facade/async.dart | 6 +++++ modules/angular2/src/facade/async.es6 | 6 +++++ .../test/web_driver_extension_spec.js | 18 +++++++------- .../webdriver/chrome_driver_extension_spec.js | 24 ++++++++----------- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/modules/angular2/src/facade/async.dart b/modules/angular2/src/facade/async.dart index f0323619d3..08252ebc2e 100644 --- a/modules/angular2/src/facade/async.dart +++ b/modules/angular2/src/facade/async.dart @@ -15,6 +15,12 @@ class PromiseWrapper { return promise.then(success, onError: onError); } + // Note: We can't rename this method to `catch`, as this is not a valid + // method name in Dart. + static Future catchError(Future promise, Function onError) { + return promise.catchError(onError); + } + static _Completer completer() => new _Completer(new Completer()); static void setTimeout(fn(), int millis) { diff --git a/modules/angular2/src/facade/async.es6 b/modules/angular2/src/facade/async.es6 index dde085bbcc..35fd57ede7 100644 --- a/modules/angular2/src/facade/async.es6 +++ b/modules/angular2/src/facade/async.es6 @@ -12,6 +12,12 @@ export class PromiseWrapper { return Promise.reject(obj); } + // Note: We can't rename this method into `catch`, as this is not a valid + // method name in Dart. + static catchError(promise:Promise, onError:Function):Promise { + return promise.catch(onError); + } + static all(promises:List):Promise { if (promises.length == 0) return Promise.resolve([]); return Promise.all(promises); diff --git a/modules/benchpress/test/web_driver_extension_spec.js b/modules/benchpress/test/web_driver_extension_spec.js index ae000c6fc0..d19e75c419 100644 --- a/modules/benchpress/test/web_driver_extension_spec.js +++ b/modules/benchpress/test/web_driver_extension_spec.js @@ -1,7 +1,8 @@ import {ddescribe, describe, it, iit, xit, expect, beforeEach, afterEach} from 'angular2/test_lib'; import { StringMap, ListWrapper } from 'angular2/src/facade/collection'; -import { isPresent, StringWrapper, isJsObject } from 'angular2/src/facade/lang'; +import { isPresent, StringWrapper } from 'angular2/src/facade/lang'; +import { PromiseWrapper } from 'angular2/src/facade/async'; import { WebDriverExtension, bind, Injector, Options } from 'benchpress/benchpress'; @@ -23,16 +24,15 @@ export function main() { }); }); - // TODO(tbosch): In Dart, somehow we don't provide the error - // correctly in the promise result... - if (isJsObject({})) { - it('should throw if there is no match', (done) => { - createExtension(['m1'], {'browser': 'm2'}).then(null, (err) => { + it('should throw if there is no match', (done) => { + PromiseWrapper.catchError( + createExtension(['m1'], {'browser': 'm2'}), + (err) => { expect(isPresent(err)).toBe(true); done(); - }); - }); - } + } + ); + }); }); } diff --git a/modules/benchpress/test/webdriver/chrome_driver_extension_spec.js b/modules/benchpress/test/webdriver/chrome_driver_extension_spec.js index 16272d87dc..3e3fcae01c 100644 --- a/modules/benchpress/test/webdriver/chrome_driver_extension_spec.js +++ b/modules/benchpress/test/webdriver/chrome_driver_extension_spec.js @@ -2,7 +2,7 @@ import {describe, it, iit, xit, expect, beforeEach, afterEach} from 'angular2/te import { ListWrapper } from 'angular2/src/facade/collection'; import { PromiseWrapper } from 'angular2/src/facade/async'; -import { Json, isBlank, isJsObject } from 'angular2/src/facade/lang'; +import { Json, isBlank } from 'angular2/src/facade/lang'; import { WebDriverExtension, ChromeDriverExtension, @@ -164,20 +164,16 @@ export function main() { }); }); - // TODO(tbosch): In Dart, somehow we don't provide the error - // correctly in the promise result... - if (isJsObject({})) { - it('should throw an error on buffer overflow', (done) => { - createExtension([ - chromeTimelineEvents.start('FunctionCall', 1234), - ], 'Tracing.bufferUsage').readPerfLog().then(null, (err) => { - expect( () => { - throw err; - }).toThrowError('The DevTools trace buffer filled during the test!'); - done(); - }); + it('should throw an error on buffer overflow', (done) => { + PromiseWrapper.catchError(createExtension([ + chromeTimelineEvents.start('FunctionCall', 1234), + ], 'Tracing.bufferUsage').readPerfLog(), (err) => { + expect( () => { + throw err; + }).toThrowError('The DevTools trace buffer filled during the test!'); + done(); }); - } + }); it('should match chrome browsers', () => { expect(createExtension().supports({