import {beforeEach, ddescribe, describe, expect, iit, inject, it, xit, beforeEachProviders,} from '@angular/core/testing/testing_internal'; import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; import {el, stringifyElement} from '@angular/platform-browser/testing'; export function main() { describe('dom adapter', () => { it('should not coalesque text nodes', () => { var el1 = el('
a
'); var el2 = el('
b
'); getDOM().appendChild(el2, getDOM().firstChild(el1)); expect(getDOM().childNodes(el2).length).toBe(2); var el2Clone = getDOM().clone(el2); expect(getDOM().childNodes(el2Clone).length).toBe(2); }); it('should clone correctly', () => { var el1 = el('
ab
'); var clone = getDOM().clone(el1); expect(clone).not.toBe(el1); getDOM().setAttribute(clone, 'test', '1'); expect(stringifyElement(clone)).toEqual('
ab
'); expect(getDOM().getAttribute(el1, 'test')).toBeFalsy(); var cNodes = getDOM().childNodes(clone); var firstChild = cNodes[0]; var secondChild = cNodes[1]; expect(getDOM().parentElement(firstChild)).toBe(clone); expect(getDOM().nextSibling(firstChild)).toBe(secondChild); expect(getDOM().isTextNode(firstChild)).toBe(true); expect(getDOM().parentElement(secondChild)).toBe(clone); expect(getDOM().nextSibling(secondChild)).toBeFalsy(); expect(getDOM().isElementNode(secondChild)).toBe(true); }); it('should be able to create text nodes and use them with the other APIs', () => { var t = getDOM().createTextNode('hello'); expect(getDOM().isTextNode(t)).toBe(true); var d = getDOM().createElement('div'); getDOM().appendChild(d, t); expect(getDOM().getInnerHTML(d)).toEqual('hello'); }); it('should set className via the class attribute', () => { var d = getDOM().createElement('div'); getDOM().setAttribute(d, 'class', 'class1'); expect(d.className).toEqual('class1'); }); it('should allow to remove nodes without parents', () => { var d = getDOM().createElement('div'); expect(() => getDOM().remove(d)).not.toThrow(); }); if (getDOM().supportsDOMEvents()) { describe('getBaseHref', () => { beforeEach(() => getDOM().resetBaseElement()); it('should return null if base element is absent', () => { expect(getDOM().getBaseHref()).toBeNull(); }); it('should return the value of the base element', () => { var baseEl = getDOM().createElement('base'); getDOM().setAttribute(baseEl, 'href', '/drop/bass/connon/'); var headEl = getDOM().defaultDoc().head; getDOM().appendChild(headEl, baseEl); var baseHref = getDOM().getBaseHref(); getDOM().removeChild(headEl, baseEl); getDOM().resetBaseElement(); expect(baseHref).toEqual('/drop/bass/connon/'); }); it('should return a relative url', () => { var baseEl = getDOM().createElement('base'); getDOM().setAttribute(baseEl, 'href', 'base'); var headEl = getDOM().defaultDoc().head; getDOM().appendChild(headEl, baseEl); var baseHref = getDOM().getBaseHref(); getDOM().removeChild(headEl, baseEl); getDOM().resetBaseElement(); expect(baseHref.endsWith('/base')).toBe(true); }); }); } }); }