Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 4019046

Browse files
jbdeboermhevery
authored andcommitted
feat(jasmine): beforeEachModule syntax and injectifying its
Closes #727
1 parent b3cb81a commit 4019046

29 files changed

+296
-206
lines changed

lib/mock/zone.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ library angular.mock_zone;
22

33
import 'dart:async' as dart_async;
44

5+
// async and sync are function compositions.
6+
class FunctionComposition {
7+
Function outer;
8+
Function inner;
9+
10+
FunctionComposition(this.outer, this.inner);
11+
12+
call() => outer(inner)();
13+
}
14+
515
final _asyncQueue = <Function>[];
616
final _timerQueue = <_TimerSpec>[];
717
final _asyncErrors = [];
@@ -144,7 +154,9 @@ noMoreAsync() {
144154
* ...
145155
* }));
146156
*/
147-
async(Function fn) => () {
157+
async(Function fn) => new FunctionComposition(_asyncOuter, fn);
158+
159+
_asyncOuter(Function fn) => () {
148160
_noMoreAsync = false;
149161
_asyncErrors.clear();
150162
_timerQueue.clear();
@@ -191,7 +203,9 @@ _createTimer(Function fn, Duration duration, bool periodic) {
191203
* Enforces synchronous code. Any calls to scheduleMicrotask inside of 'sync'
192204
* will throw an exception.
193205
*/
194-
sync(Function fn) => () {
206+
sync(Function fn) => new FunctionComposition(_syncOuter, fn);
207+
208+
_syncOuter(Function fn) => () {
195209
_asyncErrors.clear();
196210

197211
dart_async.runZoned(fn, zoneSpecification: new dart_async.ZoneSpecification(

test/_specs.dart

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import 'package:angular/angular.dart';
66
import 'package:angular/mock/module.dart';
77
import 'package:collection/wrappers.dart' show DelegatingList;
88

9-
import 'jasmine_syntax.dart';
9+
import 'jasmine_syntax.dart' as jasmine_syntax;
1010

1111
export 'dart:html';
12-
export 'jasmine_syntax.dart' hide main;
1312
export 'package:unittest/unittest.dart';
1413
export 'package:unittest/mock.dart';
1514
export 'package:di/dynamic_injector.dart';
@@ -246,9 +245,24 @@ class JQuery extends DelegatingList<Node> {
246245
shadowRoot() => new JQuery((this[0] as Element).shadowRoot);
247246
}
248247

248+
// Jasmine syntax
249+
_injectify(fn) => fn is FunctionComposition ? fn.outer(inject(fn.inner)) : inject(fn);
250+
beforeEachModule(fn) => jasmine_syntax.beforeEach(module(fn), priority:1);
251+
252+
beforeEach(fn) => jasmine_syntax.beforeEach(_injectify(fn));
253+
afterEach(fn) => jasmine_syntax.afterEach(_injectify(fn));
254+
it(name, fn) => jasmine_syntax.it(name, _injectify(fn));
255+
iit(name, fn) => jasmine_syntax.iit(name, _injectify(fn));
256+
xit(name, fn) => jasmine_syntax.xit(name, fn);
257+
xdescribe(name, fn) => jasmine_syntax.xdescribe(name, fn);
258+
ddescribe(name, fn) => jasmine_syntax.ddescribe(name, fn);
259+
describe(name, fn) => jasmine_syntax.describe(name, fn);
260+
261+
var jasmine = jasmine_syntax.jasmine;
262+
249263

250264
main() {
251-
beforeEach(setUpInjector);
252-
beforeEach(() => wrapFn(sync));
253-
afterEach(tearDownInjector);
265+
jasmine_syntax.wrapFn(sync);
266+
jasmine_syntax.beforeEach(setUpInjector, priority:3);
267+
jasmine_syntax.afterEach(tearDownInjector);
254268
}

test/animate/animation_loop_spec.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,4 @@ class MockAnimationFrame implements AnimationFrame {
9696
completer.complete(time);
9797
}
9898
}
99-
}
99+
}

test/core/core_directive_spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import '../_specs.dart';
55
void main() {
66
describe('DirectiveMap', () {
77

8-
beforeEach(module((Module module) {
8+
beforeEachModule((Module module) {
99
module..type(AnnotatedIoComponent);
10-
}));
10+
});
1111

1212
it('should extract attr map from annotated component', inject((DirectiveMap directives) {
1313
var annotations = directives.annotationsFor(AnnotatedIoComponent);

test/core/parser/generated_getter_setter_spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import 'generated_getter_setter.dart';
66

77
main() {
88
describe('hybrid getter-setter', () {
9-
beforeEach(module((Module module) {
9+
beforeEachModule((Module module) {
1010
module.type(Parser, implementedBy: DynamicParser);
1111
module.type(ClosureMap, implementedBy: StaticClosureMap);
12-
}));
12+
});
1313
parser_spec.main();
1414
});
1515
}

test/core/parser/generated_parser_spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ class AlwaysThrowError implements DynamicParser {
1010

1111
main() {
1212
describe('generated parser', () {
13-
beforeEach(module((Module module) {
13+
beforeEachModule((Module module) {
1414
module.type(Parser, implementedBy: StaticParser);
1515
module.type(DynamicParser, implementedBy: AlwaysThrowError);
1616

1717
module.factory(StaticParserFunctions, (Injector injector) {
1818
return generated_functions.functions();
1919
});
20-
}));
20+
});
2121
parser_spec.main();
2222
});
2323
}

test/core/parser/parser_spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ main() {
4848
Map<String, dynamic> context;
4949
Parser<Expression> parser;
5050
FilterMap filters;
51-
beforeEach(module((Module module) {
51+
beforeEachModule((Module module) {
5252
module.type(IncrementFilter);
5353
module.type(SubstringFilter);
54-
}));
54+
});
5555
beforeEach(inject((Parser injectedParser, FilterMap injectedFilters) {
5656
parser = injectedParser;
5757
filters = injectedFilters;

test/core/parser/static_parser_spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ class AlwaysReturnX implements DynamicParser {
1111

1212
main() {
1313
describe('static parser', () {
14-
beforeEach(module((Module m) {
14+
beforeEachModule((Module m) {
1515
m.type(Parser, implementedBy: StaticParser);
1616
m.type(DynamicParser, implementedBy: AlwaysReturnX);
1717
m.value(StaticParserFunctions, new StaticParserFunctions(EVAL, ASSIGN));
18-
}));
18+
});
1919

2020

2121
it('should run a static function', inject((Parser parser) {

0 commit comments

Comments
 (0)