Skip to content

Commit

Permalink
--wip-- [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
Serabe committed Jul 5, 2017
1 parent 2f756b1 commit a3461ae
Showing 1 changed file with 55 additions and 41 deletions.
96 changes: 55 additions & 41 deletions packages/@glimmer/runtime/test/attributes-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { SVG_NAMESPACE, RenderResult, Template, normalizeProperty } from "../ind

// Mine for sure
import { Opaque } from "@glimmer/interfaces";
import { RenderTest, module, renderTemplate, test } from '@glimmer/test-helpers';
import { RenderTest as BaseRenderTest, module, renderTemplate, test } from '@glimmer/test-helpers';
import { UpdatableReference } from "@glimmer/object-reference";

let root: HTMLElement;
Expand Down Expand Up @@ -64,7 +64,7 @@ function nativeValueForElementProperty<T extends keyof HTMLElementTagNameMap, P
}
*/

class AttributesTests extends RenderTest {
abstract class RenderTest extends BaseRenderTest {
protected element: HTMLElement;

constructor(env = new TestEnvironment()) {
Expand All @@ -73,6 +73,17 @@ class AttributesTests extends RenderTest {
//this.element.setAttribute('debug-root', 'true');
}

renderTemplate(template: Template<Opaque>): RenderResult {
return renderTemplate(this.env, template, {
self: new UpdatableReference(this.context),
parentNode: this.element,
dynamicScope: new TestDynamicScope()
});
}
}

class AttributesTests extends RenderTest {

@test "helpers shadow self"() {
this.registerHelper('foo', function() {
return "hello";
Expand Down Expand Up @@ -204,58 +215,61 @@ class AttributesTests extends RenderTest {
this.assertStableNodes();
}

renderTemplate(template: Template<Opaque>): RenderResult {
this.populateHelpers();
return renderTemplate(this.env, template, {
self: new UpdatableReference(this.context),
parentNode: this.element,
dynamicScope: new TestDynamicScope()
});
}
}

module("Attributes Test", AttributesTests);

/*
test("a[href] marks vbscript: protocol as unsafe", () => {
let template = compile('<a href="{{foo}}"></a>');
let context = { foo: 'vbscript:foo()' };
render(template, context);
equalTokens(root, '<a href="unsafe:vbscript:foo()"></a>');
@test "a[href] marks vbscript: protocol as unsafe"() {
this.render('<a href="{{foo}}"></a>', { foo: 'vbscript:foo()' });
this.assertHTML('<a href="unsafe:vbscript:foo()"></a>');
this.assertStableRerender();

rerender();
this.rerender({ foo: 'example.com' });
this.assertHTML('<a href="example.com"></a>');
this.assertStableNodes();

equalTokens(root, '<a href="unsafe:vbscript:foo()"></a>');
});
this.rerender({ foo: 'vbscript:foo()' });
this.assertHTML('<a href="unsafe:vbscript:foo()"></a>');
this.assertStableNodes();
}

test("a[href] can be removed by setting to `null`", () => {
let template = compile('<a href={{foo}}></a>');
@test "a[href] can be removed by setting to `null`"() {
this.render('<a href={{foo}}></a>', { foo: 'http://foo.bar/derp.jpg' });
this.assertHTML('<a href="http://foo.bar/derp.jpg"></a>');
this.assertStableRerender();

let context = { foo: 'http://foo.bar/derp.jpg' };
render(template, context);
this.rerender({ foo: null });
this.assertHTML('<a></a>');
this.assertStableNodes();

equalTokens(root, '<a href="http://foo.bar/derp.jpg"></a>');
this.rerender({ foo: 'http://foo.bar/derp.jpg' });
this.assertHTML('<a href="http://foo.bar/derp.jpg"></a>');
this.assertStableNodes();
}

rerender({ foo: null });
@test "a[href] can be removed by setting to `undefined`"() {
this.render('<a href={{foo}}></a>', { foo: 'http://foo.bar/derp.jpg' });
this.assertHTML('<a href="http://foo.bar/derp.jpg"></a>');
this.assertStableRerender();

equalTokens(root, '<a></a>');
});
this.rerender({ foo: undefined });
this.assertHTML('<a></a>');
this.assertStableNodes();

test("a[href] can be removed by setting to `undefined`", () => {
let template = compile('<a href={{foo}}></a>');
this.rerender({ foo: 'http://foo.bar/derp.jpg' });
this.assertHTML('<a href="http://foo.bar/derp.jpg"></a>');
this.assertStableNodes();
}

let context = { foo: 'http://foo.bar/derp.jpg' };
render(template, context);
renderTemplate(template: Template<Opaque>): RenderResult {
this.populateHelpers();
return super.renderTemplate(template);
}
}

equalTokens(root, '<a href="http://foo.bar/derp.jpg"></a>');
module("Attributes Test", AttributesTests);

rerender({ foo: undefined });
abstract class SpecialAttributeTest extends RenderTest {

equalTokens(root, '<a></a>');
});
}

/*
test("img[src] marks javascript: protocol as unsafe", () => {
let template = compile('<img src="{{foo}}">');
Expand Down

0 comments on commit a3461ae

Please sign in to comment.