chore(build): run event tests in Node

Closes #1476
This commit is contained in:
Marc Laval
2015-04-21 19:30:55 +02:00
committed by Misko Hevery
parent e70a2f21dd
commit 22c6c09daf
6 changed files with 443 additions and 405 deletions

View File

@ -84,19 +84,46 @@ export class Parse5DomAdapter extends DomAdapter {
return result;
}
on(el, evt, listener) {
//Do nothing, in order to not break forms integration tests
var listenersMap = el._eventListenersMap;
if (isBlank(listenersMap)) {
var listenersMap = StringMapWrapper.create();
el._eventListenersMap = listenersMap;
}
var listeners = StringMapWrapper.get(listenersMap, evt);
if (isBlank(listeners)) {
listeners = ListWrapper.create();
}
ListWrapper.push(listeners, listener);
StringMapWrapper.set(listenersMap, evt, listeners);
}
onAndCancel(el, evt, listener): Function {
//Do nothing, in order to not break forms integration tests
this.on(el, evt, listener);
return () => {ListWrapper.remove(StringMapWrapper.get(el._eventListenersMap, evt), listener);};
}
dispatchEvent(el, evt) {
throw _notImplemented('dispatchEvent');
if (isBlank(evt.target)) {
evt.target = el;
}
if (isPresent(el._eventListenersMap)) {
var listeners = StringMapWrapper.get(el._eventListenersMap, evt.type);
if (isPresent(listeners)) {
for (var i = 0; i < listeners.length; i++) {
listeners[i](evt);
}
}
}
if (isPresent(el.parent)) {
this.dispatchEvent(el.parent, evt);
}
if (isPresent(el._window)) {
this.dispatchEvent(el._window, evt);
}
}
createMouseEvent(eventType) {
throw _notImplemented('createMouseEvent');
return this.createEvent(eventType);
}
createEvent(eventType) {
throw _notImplemented('createEvent');
return {type: eventType};
}
getInnerHTML(el) {
return serializer.serialize(this.templateAwareRoot(el));
@ -378,6 +405,7 @@ export class Parse5DomAdapter extends DomAdapter {
this.appendChild(newDoc, body);
StringMapWrapper.set(newDoc, "head", head);
StringMapWrapper.set(newDoc, "body", body);
StringMapWrapper.set(newDoc, "_window", StringMapWrapper.create());
return newDoc;
}
defaultDoc() {
@ -482,6 +510,15 @@ export class Parse5DomAdapter extends DomAdapter {
supportsNativeShadowDOM(): boolean {
return false;
}
getGlobalEventTarget(target:string) {
if (target == "window") {
return this.defaultDoc()._window;
} else if (target == "document") {
return this.defaultDoc();
} else if (target == "body") {
return this.defaultDoc().body;
}
}
}
//TODO: build a proper list, this one is all the keys of a HTMLInputElement

View File

@ -1,6 +1,7 @@
import {Decorator} from 'angular2/angular2';
import {ControlDirective, Validators} from 'angular2/forms';
import {Validators} from './validators';
import {ControlDirective} from './directives';
@Decorator({
selector: '[required]'