skypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmail
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
659 lines
24 KiB
659 lines
24 KiB
9 years ago
|
describe("Ext.Template", function() {
|
||
|
|
||
|
describe("instantiation", function() {
|
||
|
var tpl;
|
||
|
|
||
|
it("it should extend Ext.Base", function() {
|
||
|
tpl = new Ext.Template("");
|
||
|
expect(tpl.superclass).toEqual(Ext.Base.prototype);
|
||
|
});
|
||
|
|
||
|
describe("configuration options", function() {
|
||
|
it("should disableFormats by default", function() {
|
||
|
tpl = new Ext.Template("");
|
||
|
expect(tpl.disableFormats).toBe(false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("should alias apply with applyTemplate", function() {
|
||
|
tpl = new Ext.Template("");
|
||
|
|
||
|
spyOn(tpl, 'apply');
|
||
|
|
||
|
tpl.applyTemplate();
|
||
|
|
||
|
expect(tpl.apply).toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
it("should be able to compile immediately", function() {
|
||
|
spyOn(Ext.Template.prototype, "compile").andCallThrough();
|
||
|
|
||
|
tpl = new Ext.Template('Hello {foo}', {
|
||
|
compiled: true
|
||
|
});
|
||
|
// must call the new tpl for it bother compiling it
|
||
|
var s = tpl.apply({ foo: 42 });
|
||
|
|
||
|
expect(s).toBe('Hello 42');
|
||
|
expect(Ext.Template.prototype.compile).toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
describe("constructor arguments", function() {
|
||
|
describe("objects", function() {
|
||
|
it("should apply all object passed after first arguments to configuration", function() {
|
||
|
var o1 = {a: 1},
|
||
|
o2 = {a: 2},
|
||
|
o3 = {a: 3};
|
||
|
|
||
|
spyOn(Ext, "apply");
|
||
|
|
||
|
tpl = new Ext.Template("", o1, o2, o3);
|
||
|
|
||
|
expect(Ext.apply.calls[1].args).toEqual([tpl, o1]);
|
||
|
expect(Ext.apply.calls[3].args).toEqual([tpl, o2]);
|
||
|
expect(Ext.apply.calls[5].args).toEqual([tpl, o3]);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("strings", function() {
|
||
|
it("should concat all strings passed as arguments", function() {
|
||
|
var s1 = 'a',
|
||
|
s2 = 'b',
|
||
|
s3 = 'c';
|
||
|
|
||
|
tpl = new Ext.Template(s1, s2, s3);
|
||
|
|
||
|
expect(tpl.html).toEqual(s1 + s2 + s3);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("array", function(){
|
||
|
it("should concat all array strings", function(){
|
||
|
var tpl = new Ext.Template(['foo', 'bar', 'baz']);
|
||
|
expect(tpl.html).toBe('foobarbaz');
|
||
|
});
|
||
|
|
||
|
it("should apply an objects after the first argument to the template", function(){
|
||
|
var o1 = {
|
||
|
a: function(){}
|
||
|
}, o2 = {
|
||
|
b: function(){}
|
||
|
};
|
||
|
|
||
|
var tpl = new Ext.Template(['foo', 'bar', o1, o2]);
|
||
|
expect(tpl.html).toBe('foobar');
|
||
|
expect(tpl.a).toBe(o1.a);
|
||
|
expect(tpl.b).toBe(o2.b);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("methods", function() {
|
||
|
var appliedArr,
|
||
|
appliedObject,
|
||
|
simpleTpl,
|
||
|
complexTpl,
|
||
|
rootEl,
|
||
|
childEl,
|
||
|
simpleTplEl,
|
||
|
complexTplEl;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
rootEl = Ext.fly(document.body).createChild({cls: "foo", children: [{cls: "bar"}]});
|
||
|
childEl = rootEl.first();
|
||
|
|
||
|
simpleTpl = new Ext.Template('<div class="template">Hello {0}.</div>');
|
||
|
appliedArr = ["world"];
|
||
|
|
||
|
complexTpl = new Ext.Template([
|
||
|
'<div name="{id}">',
|
||
|
'<span class="{cls}">{name} {value:ellipsis(10)}</span>',
|
||
|
'</div>'
|
||
|
]);
|
||
|
appliedObject = {id: "myid", cls: "myclass", name: "foo", value: "bar"};
|
||
|
spyOn(Ext, "getDom").andCallThrough();
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
rootEl.destroy();
|
||
|
childEl.destroy();
|
||
|
});
|
||
|
|
||
|
describe("append", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
beforeEach(function() {
|
||
|
simpleTplEl = simpleTpl.append(rootEl, ["world"], true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
simpleTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should append the new node to the end of the specified element", function() {
|
||
|
expect(simpleTplEl).toEqual(rootEl.last());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(simpleTplEl.dom).hasHTML('Hello world.');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
beforeEach(function() {
|
||
|
complexTplEl = complexTpl.append(rootEl, appliedObject, true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
complexTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should append the new node to the end of the specified element", function() {
|
||
|
expect(complexTplEl).toEqual(rootEl.last());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(complexTplEl.dom).hasHTML('<span class="myclass">foo bar</span>');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("apply", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
it("should apply the supplied value and return an HTML fragments", function() {
|
||
|
expect(simpleTpl.apply(appliedArr)).toEqual('<div class="template">Hello world.</div>');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
it("should apply the supplied value and return an HTML fragments", function() {
|
||
|
expect(complexTpl.apply(appliedObject)).toEqual('<div name="myid"><span class="myclass">foo bar</span></div>');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
describe("insertAfter", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
beforeEach(function() {
|
||
|
simpleTplEl = simpleTpl.insertAfter(childEl, ["world"], true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
simpleTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert the new node after the specified element", function() {
|
||
|
expect(simpleTplEl).toEqual(childEl.next());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(simpleTplEl.dom).hasHTML('Hello world.');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(childEl);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
beforeEach(function() {
|
||
|
complexTplEl = complexTpl.insertAfter(childEl, appliedObject, true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
complexTplEl.destroy();
|
||
|
})
|
||
|
|
||
|
it("should insert the new node after the specified element", function() {
|
||
|
expect(complexTplEl).toEqual(childEl.next());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(complexTplEl.dom).hasHTML('<span class="myclass">foo bar</span>');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(childEl);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("insertBefore", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
beforeEach(function() {
|
||
|
simpleTplEl = simpleTpl.insertBefore(childEl, ["world"], true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
simpleTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert the new node before the specified element", function() {
|
||
|
expect(simpleTplEl).toEqual(childEl.prev());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(simpleTplEl.dom).hasHTML('Hello world.');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(childEl);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
beforeEach(function() {
|
||
|
complexTplEl = complexTpl.insertBefore(childEl, appliedObject, true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
complexTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert the new node before the specified element", function() {
|
||
|
expect(complexTplEl).toEqual(childEl.prev());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(complexTplEl.dom).hasHTML('<span class="myclass">foo bar</span>');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(childEl);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("insertFirst", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
beforeEach(function() {
|
||
|
simpleTplEl = simpleTpl.insertFirst(rootEl, ["world"], true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
simpleTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert the new node as first child of the specified element", function() {
|
||
|
expect(simpleTplEl).toEqual(rootEl.first());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(simpleTplEl.dom).hasHTML('Hello world.');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
beforeEach(function() {
|
||
|
complexTplEl = complexTpl.insertFirst(rootEl, appliedObject, true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
complexTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert the new node as first child of the specified element", function() {
|
||
|
expect(complexTplEl).toEqual(rootEl.first());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(complexTplEl.dom).hasHTML('<span class="myclass">foo bar</span>');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("overwrite", function() {
|
||
|
describe("with a simple template", function() {
|
||
|
beforeEach(function() {
|
||
|
simpleTplEl = simpleTpl.overwrite(rootEl, ["world"], true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
simpleTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should overrride the content of the specified element", function() {
|
||
|
expect(simpleTplEl).toEqual(rootEl.first());
|
||
|
expect(simpleTplEl).toEqual(rootEl.last());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(simpleTplEl.dom).hasHTML('Hello world.');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("with a complex template", function() {
|
||
|
beforeEach(function() {
|
||
|
complexTplEl = complexTpl.overwrite(rootEl, appliedObject, true);
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
complexTplEl.destroy();
|
||
|
});
|
||
|
|
||
|
it("should overrride the content of the specified element", function() {
|
||
|
expect(complexTplEl).toEqual(rootEl.first());
|
||
|
expect(complexTplEl).toEqual(rootEl.last());
|
||
|
});
|
||
|
|
||
|
it("should apply the supplied value to the template", function() {
|
||
|
expect(complexTplEl.dom).hasHTML('<span class="myclass">foo bar</span>');
|
||
|
});
|
||
|
|
||
|
it("should call Ext.getDom", function() {
|
||
|
expect(Ext.getDom).toHaveBeenCalledWith(rootEl);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("overwrite a table element", function() {
|
||
|
var table;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
table = Ext.fly(document.body).createChild({tag:'table'});
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
table.destroy();
|
||
|
});
|
||
|
|
||
|
it("should insert table structure into a table", function() {
|
||
|
new Ext.Template('<tr><td>text</td></tr>').overwrite(table);
|
||
|
|
||
|
var innerHTML = table.dom.innerHTML;
|
||
|
|
||
|
if (Ext.isSafari4) {
|
||
|
// Old Safari doesn't inject the tbody but the table row is created successfully
|
||
|
expect(innerHTML).toEqual("<tr><td>text</td></tr>");
|
||
|
}
|
||
|
else {
|
||
|
expect(innerHTML.toLowerCase().replace(/\s/g, '')).toEqual("<tbody><tr><td>text</td></tr></tbody>");
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("set", function() {
|
||
|
var tplString = '<div class="template">Good bye {0}.</div>';
|
||
|
|
||
|
it("should set the HTML used as the template", function() {
|
||
|
simpleTpl.set(tplString);
|
||
|
|
||
|
expect(simpleTpl.apply(["world"])).toEqual('<div class="template">Good bye world.</div>');
|
||
|
});
|
||
|
|
||
|
it("should be able to compile the template", function() {
|
||
|
simpleTpl.set(tplString, true);
|
||
|
var s = simpleTpl.apply([42]);
|
||
|
|
||
|
// must call the new tpl for it bother compiling it
|
||
|
expect(s).toBe('<div class="template">Good bye 42.</div>');
|
||
|
expect(typeof simpleTpl.fn === "function").toBe(true);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("compile", function() {
|
||
|
it("should call compiled function", function() {
|
||
|
complexTpl.compile();
|
||
|
|
||
|
spyOn(complexTpl, "fn").andCallThrough();
|
||
|
|
||
|
complexTpl.apply(appliedObject);
|
||
|
|
||
|
expect(complexTpl.fn).toHaveBeenCalledWith(appliedObject);
|
||
|
});
|
||
|
|
||
|
it("should return the same value as if it wasn't compiled with a complex template", function() {
|
||
|
var htmlWithNotCompiledTemplate,
|
||
|
htmlWithCompiledTemplate;
|
||
|
htmlWithNotCompiledTemplate = complexTpl.apply(appliedObject);
|
||
|
complexTpl.compile();
|
||
|
htmlWithCompiledTemplate = complexTpl.apply(appliedObject);
|
||
|
|
||
|
expect(htmlWithCompiledTemplate).toEqual(htmlWithNotCompiledTemplate);
|
||
|
});
|
||
|
|
||
|
it("should return the same value as if it wasn't compiled with a simple template", function() {
|
||
|
var htmlWithNotCompiledTemplate,
|
||
|
htmlWithCompiledTemplate;
|
||
|
|
||
|
htmlWithNotCompiledTemplate = simpleTpl.apply(appliedArr);
|
||
|
simpleTpl.compile();
|
||
|
htmlWithCompiledTemplate = simpleTpl.apply(appliedArr);
|
||
|
|
||
|
expect(htmlWithCompiledTemplate).toEqual(htmlWithNotCompiledTemplate);
|
||
|
});
|
||
|
|
||
|
it("should return the template itself", function() {
|
||
|
expect(simpleTpl.compile()).toEqual(simpleTpl);
|
||
|
});
|
||
|
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("formats", function() {
|
||
|
var tpl,
|
||
|
ellipsisSpy,
|
||
|
htmlEncodeSpy,
|
||
|
appliedObject;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
appliedObject = {a: "123", b: "456789"};
|
||
|
|
||
|
ellipsisSpy = spyOn(Ext.util.Format, "ellipsis");
|
||
|
htmlEncodeSpy = spyOn(Ext.util.Format, "htmlEncode");
|
||
|
});
|
||
|
|
||
|
describe("enabled", function() {
|
||
|
beforeEach(function() {
|
||
|
tpl = new Ext.Template(
|
||
|
'{a:ellipsis(2)}',
|
||
|
'{b:htmlEncode}'
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it("should call Ext.util.Format.ellipsis with a non compiled template", function() {
|
||
|
tpl.apply(appliedObject);
|
||
|
|
||
|
expect(ellipsisSpy).toHaveBeenCalledWith(appliedObject.a, 2);
|
||
|
expect(htmlEncodeSpy).toHaveBeenCalledWith(appliedObject.b);
|
||
|
});
|
||
|
|
||
|
it("should call Ext.util.Format.ellipsis with compiled template", function() {
|
||
|
tpl.compile();
|
||
|
tpl.apply(appliedObject);
|
||
|
|
||
|
expect(ellipsisSpy).toHaveBeenCalledWith(appliedObject.a, 2);
|
||
|
expect(htmlEncodeSpy).toHaveBeenCalledWith(appliedObject.b);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("disabled", function() {
|
||
|
beforeEach(function() {
|
||
|
tpl = new Ext.Template(
|
||
|
'{a:ellipsis(2)}',
|
||
|
{disableFormats: true}
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it("should not call Ext.util.Format.ellipsis with a non compiled template", function() {
|
||
|
tpl.apply(appliedObject);
|
||
|
|
||
|
expect(ellipsisSpy).not.toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
it("should not call Ext.util.Format.ellipsis with compiled template", function() {
|
||
|
tpl.compile();
|
||
|
tpl.apply(appliedObject);
|
||
|
|
||
|
expect(ellipsisSpy).not.toHaveBeenCalled();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("members functions", function() {
|
||
|
var tpl,
|
||
|
memberFn,
|
||
|
appliedObject;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
memberFn = jasmine.createSpy().andCallFake(function(a, inc) {
|
||
|
return a + inc;
|
||
|
});
|
||
|
|
||
|
var obj = {
|
||
|
referenceHolder: true,
|
||
|
controller: 'foo',
|
||
|
|
||
|
fmt: function () {
|
||
|
|
||
|
},
|
||
|
promote: function () {
|
||
|
//
|
||
|
},
|
||
|
|
||
|
items: [{
|
||
|
items: [{
|
||
|
xtype: 'button',
|
||
|
reference: 'btn',
|
||
|
listeners: {
|
||
|
click: 'promote'
|
||
|
},
|
||
|
bind: {
|
||
|
text: 'Promote {user.name:this.fmt}'
|
||
|
}
|
||
|
}]
|
||
|
}]
|
||
|
}
|
||
|
|
||
|
tpl = new Ext.Template(
|
||
|
'{a:this.increment(7)}',
|
||
|
{increment: memberFn}
|
||
|
);
|
||
|
|
||
|
appliedObject = {a: 1};
|
||
|
});
|
||
|
|
||
|
it("should call members functions with a non compiled template", function() {
|
||
|
tpl.apply(appliedObject);
|
||
|
expect(memberFn).toHaveBeenCalledWith(1, 7);
|
||
|
});
|
||
|
|
||
|
it("should call members functions with a compiled template", function() {
|
||
|
tpl.compile();
|
||
|
tpl.apply(appliedObject);
|
||
|
expect(memberFn).toHaveBeenCalledWith(1, 7);
|
||
|
});
|
||
|
|
||
|
it("should add member function in initialConfig", function() {
|
||
|
expect(tpl.initialConfig).toEqual({increment: memberFn});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("Ext.Template.from", function() {
|
||
|
var elWithHtml, elWithValue;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
elWithHtml = Ext.fly(document.body).createChild({tag: "div", html:"FOO {0}."});
|
||
|
elWithValue = Ext.fly(document.body).createChild({tag: "input"});
|
||
|
elWithValue.dom.value = "BAR {0}.";
|
||
|
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
elWithHtml.remove();
|
||
|
elWithValue.remove();
|
||
|
});
|
||
|
|
||
|
it("should create a template with dom element innerHTML", function() {
|
||
|
var tpl = Ext.Template.from(elWithHtml);
|
||
|
|
||
|
expect(tpl.apply(['BAR'])).toEqual('FOO BAR.');
|
||
|
});
|
||
|
|
||
|
it("should create a template with dom element value", function() {
|
||
|
var tpl = Ext.Template.from(elWithValue);
|
||
|
|
||
|
expect(tpl.apply(['FOO'])).toEqual('BAR FOO.');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
function testTemplate(compiled) {
|
||
|
describe('Using numeric tokens and a values array', function() {
|
||
|
it('should use Ext.util.Format formatting functions by default', function() {
|
||
|
expect(new Ext.Template('Value: {0:number("0.00")}', {compiled: compiled}).apply([3.257])).toBe("Value: 3.26");
|
||
|
});
|
||
|
it('should use member formatting functions when prepended with "this."', function() {
|
||
|
var tpl = [
|
||
|
'Warning: {0:this.bold}',
|
||
|
{
|
||
|
bold: function(v){
|
||
|
return '<b>' + v + '</b>';
|
||
|
},
|
||
|
compiled: compiled
|
||
|
}
|
||
|
];
|
||
|
expect(new Ext.Template(tpl).apply(['Warning message'])).toBe("Warning: <b>Warning message</b>");
|
||
|
});
|
||
|
it('should not see "{margin:0} as a token', function() {
|
||
|
expect(new Ext.Template('p{margin:0}body{direction:{0}}', {compiled: compiled}).apply(['rtl'])).toBe('p{margin:0}body{direction:rtl}');
|
||
|
});
|
||
|
it('should not see "{1:someText} as a token', function() {
|
||
|
expect(new Ext.Template('{0}{1:sometext}{1}', {compiled: compiled}).apply(['foo', 'bar'])).toBe('foo{1:sometext}bar');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('Using alphanumeric tokens and a values object', function() {
|
||
|
it('should use Ext.util.Format formatting functions by default', function() {
|
||
|
expect(new Ext.Template('Value: {prop0:number("0.00")}', {compiled: compiled}).apply({prop0:3.257})).toBe("Value: 3.26");
|
||
|
});
|
||
|
it('should use member formatting functions when prepended with "this."', function() {
|
||
|
var tpl = [
|
||
|
'Warning: {prop0:this.bold}',
|
||
|
{
|
||
|
bold: function(v){
|
||
|
return '<b>' + v + '</b>';
|
||
|
},
|
||
|
compiled: compiled
|
||
|
}
|
||
|
]
|
||
|
expect(new Ext.Template(tpl).apply({prop0:'Warning message'})).toBe("Warning: <b>Warning message</b>");
|
||
|
});
|
||
|
it('should not see "{margin:0} as a token', function() {
|
||
|
expect(new Ext.Template('p{margin:0}body{direction:{prop0}}', {compiled: compiled}).apply({prop0:'rtl'})).toBe('p{margin:0}body{direction:rtl}');
|
||
|
});
|
||
|
it('should not see "{1:someText} as a token', function() {
|
||
|
expect(new Ext.Template('{prop0}{1:sometext}{prop1}', {compiled: compiled}).apply({prop0:'foo', prop1:'bar'})).toBe('foo{1:sometext}bar');
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
describe('Non-compiled', function() {
|
||
|
testTemplate(false);
|
||
|
});
|
||
|
|
||
|
describe('Compiled', function() {
|
||
|
testTemplate(true);
|
||
|
});
|
||
|
});
|