Upgrade to ExtJS 3.2.0 - Released 03/30/2010
[extjs.git] / test / unit / widgets / GridPanel.js
diff --git a/test/unit/widgets/GridPanel.js b/test/unit/widgets/GridPanel.js
new file mode 100644 (file)
index 0000000..1def66b
--- /dev/null
@@ -0,0 +1,103 @@
+/*!
+ * Ext JS Library 3.2.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/**
+ * Tests Ext.data.Store functionality
+ * @author Ed Spencer
+ */
+(function() {
+    var suite  = Ext.test.session.getSuite('Ext.grid.GridPanel'),
+        assert = Y.Assert;
+    
+    //builds and returns a grid with some default config
+    var buildGrid = function(config) {
+        config = config || {};
+              
+        Ext.applyIf(config, {
+            store: new Ext.data.ArrayStore({
+                autoDestroy: true,
+                
+                storeId: 'myStore',
+                idIndex: 0,  
+                fields : [
+                   'company',
+                   {name: 'price',      type: 'float'},
+                   {name: 'change',     type: 'float'},
+                   {name: 'pctChange',  type: 'float'},
+                   {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
+                ],
+                
+                data: [
+                    ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
+                    ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
+                    ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],
+                    ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],
+                    ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']
+                ]
+            }),
+            
+            colModel: new Ext.grid.ColumnModel({
+                columns: [
+                    {header: 'Name', dataIndex: 'company'}
+                ]
+            }),
+            
+            selModel: new Ext.grid.RowSelectionModel()
+        });
+        
+        return new Ext.grid.GridPanel(config);
+    };
+        
+    suite.add(new Y.Test.Case({
+        name: 'constructor and initComponent',
+        
+        testDisallowsAutoScroll: function() {
+            var grid = buildGrid({autoScroll: true});
+            
+            assert.isFalse(grid.autoScroll);
+        },
+        
+        testDisallowsAutoWidth: function() {
+            var grid = buildGrid({autoWidth: true});
+            
+            assert.isFalse(grid.autoWidth);
+        },
+        
+        testDsTranslatedToStore: function() {
+            var store = new Ext.data.ArrayStore({fields: ['name']}),
+                grid  = buildGrid({ds: store, store: null});
+            
+            assert.areEqual(store, grid.store);
+            assert.isUndefined(grid.ds);
+        },
+        
+        testCmTranslatedToColModel: function() {
+            var colModel = new Ext.grid.ColumnModel({columns: [{header: 'my header'}]}),
+                grid     = buildGrid({cm: colModel, colModel: null});
+            
+            assert.areEqual(colModel, grid.colModel);
+            assert.isUndefined(grid.cm);
+        },
+        
+        testColumnsTurnedIntoColModel: function() {
+            var columns = [
+                {header: 'first', dataIndex: 'company'}, {header: 'second', dataIndex: 'price'}
+            ];
+            var grid = buildGrid({columns: columns, colModel: null});
+            
+            var colModel = grid.colModel;
+            assert.areEqual(2, colModel.getColumnCount());
+        }
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'reconfigure'
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'walk cells'
+    }));
+})();
\ No newline at end of file