test(matchers): add support for toHaveCssStyle matcher

This commit is contained in:
Matias Niemelä
2015-11-17 12:37:39 -08:00
parent e1d7bdcfe7
commit fad354904d
10 changed files with 94 additions and 2 deletions

View File

@ -4,6 +4,7 @@ import 'dart:html';
import 'package:angular2/platform/common_dom.dart' show setRootDomAdapter;
import 'generic_browser_adapter.dart' show GenericBrowserDomAdapter;
import 'package:angular2/src/facade/browser.dart';
import 'package:angular2/src/facade/lang.dart' show isBlank, isPresent;
import 'dart:js' as js;
// WARNING: Do not expose outside this class. Parsing HTML using this
@ -335,6 +336,11 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
element.style.setProperty(stylename, stylevalue);
}
bool hasStyle(Element element, String stylename, [String stylevalue]) {
var value = this.getStyle(element, stylename);
return isPresent(stylevalue) ? value == stylevalue : value.length > 0;
}
void removeStyle(Element element, String stylename) {
element.style.removeProperty(stylename);
}

View File

@ -207,6 +207,10 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
}
removeStyle(element, stylename: string) { element.style[stylename] = null; }
getStyle(element, stylename: string): string { return element.style[stylename]; }
hasStyle(element, stylename: string, stylevalue: string = null): boolean {
var value = this.getStyle(element, stylename) || '';
return stylevalue ? value == stylevalue : value.length > 0;
}
tagName(element): string { return element.tagName; }
attributeMap(element): Map<string, string> {
var res = new Map<string, string>();

View File

@ -89,6 +89,7 @@ export abstract class DomAdapter {
abstract setStyle(element, stylename: string, stylevalue: string);
abstract removeStyle(element, stylename: string);
abstract getStyle(element, stylename: string): string;
abstract hasStyle(element, stylename: string, stylevalue?: string): boolean;
abstract tagName(element): string;
abstract attributeMap(element): Map<string, string>;
abstract hasAttribute(element, attribute: string): boolean;

View File

@ -6,6 +6,8 @@ import 'package:html/dom.dart';
import 'package:angular2/platform/common_dom.dart';
import 'package:angular2/src/compiler/xhr.dart';
import 'package:angular2/src/facade/lang.dart' show isBlank, isPresent;
const _attrToPropMap = const {
'innerHtml': 'innerHTML',
'readonly': 'readOnly',
@ -265,6 +267,10 @@ abstract class AbstractHtml5LibAdapter implements DomAdapter {
throw 'not implemented';
}
bool hasStyle(Element element, String styleName, [String styleValue]) {
throw 'not implemented';
}
removeStyle(element, String stylename) {
throw 'not implemented';
}

View File

@ -371,6 +371,10 @@ export class Parse5DomAdapter extends DomAdapter {
hasClass(element, classname: string): boolean {
return ListWrapper.contains(this.classList(element), classname);
}
hasStyle(element, stylename: string, stylevalue: string = null): boolean {
var value = this.getStyle(element, stylename) || '';
return stylevalue ? value == stylevalue : value.length > 0;
}
/** @internal */
_readStyleAttribute(element) {
var styleMap = {};