Upgrade to ExtJS 3.2.0 - Released 03/30/2010
[extjs.git] / test / unit / Ext / XTemplate.js
diff --git a/test/unit/Ext/XTemplate.js b/test/unit/Ext/XTemplate.js
new file mode 100644 (file)
index 0000000..1c5d4d2
--- /dev/null
@@ -0,0 +1,77 @@
+/*!
+ * Ext JS Library 3.2.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+
+Ext.test.session.addTest( 'Ext', new Y.Test.Case({
+
+    name: 'XTemplate',
+
+    planned: 3,
+
+    // 3
+    test_apply: function() {
+        var data = {
+            hello: 'Hello',
+            world: 'World',
+            items1: [
+                'test1',
+                'test2',
+                'test3'
+            ],
+            items2: [
+                { name: 'test1' },
+                { name: 'test2' },
+                { name: 'test3' }
+            ],
+            kids: [{
+                name: 'Sara Grace',
+                gender: 'f',
+                age:3
+            },{
+                name: 'Zachary',
+                gender: 'm',
+                age:2
+            },{
+                name: 'John James',
+                gender: 'm',
+                age:.5
+            }]
+        };
+        var tpl1 = new Ext.XTemplate( '{hello} {world}. <tpl for="items1">{.}{[ xindex === xcount ? "" : ":" ]}</tpl>', { compiled: true });
+        Y.Assert.areEqual( 'Hello World. test1:test2:test3', tpl1.apply( data ), 'Test apply with an object with an array' );
+
+        var tpl2 = new Ext.XTemplate( '<tpl for="items2">{name}{[ xindex === xcount ? "" : ":" ]}</tpl>', { compiled: true });
+        Y.Assert.areEqual( 'test1:test2:test3', tpl2.apply( data ), 'Test apply with an object with an array of hashes' );
+        
+        var tpl3 = new Ext.XTemplate(
+            '<ul><tpl for="kids">',
+                '<tpl if="this.isGirl(gender)">',
+                    '<li>Girl: {name} - {age}</li>',
+                '</tpl>',
+                '<tpl if="!this.isGirl(gender)">',
+                    '<tpl if="age &lt; 1">',
+                        '<li>Baby Boy: {name} - {age*12} months</li>',
+                    '</tpl>',
+                    '<tpl if="age &gt;= 1">',
+                        '<li>Boy: {name} - {age}</li>',
+                    '</tpl>',
+                '</tpl>',
+            '</tpl></ul>',
+            {
+                compiled: true,
+                disableFormats: true,
+                isGirl: function(gender){
+                    return gender == 'f';
+                }
+            }
+        );
+        Y.Assert.areEqual( '<ul><li>Girl: Sara Grace - 3</li><li>Boy: Zachary - 2</li><li>Baby Boy: John James - 6 months</li></ul>',
+            tpl3.apply( data ), 'Test apply with template member functions, basic comparison operators, and math' );
+    }
+
+    // apply is an alias for applyTemplate
+
+}));