6ed8155c20400990c7e65faa4b40aef98c5b5136Luke SmithYUI.add('datatable-core-tests', function(Y) {
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smithvar suite = new Y.Test.Suite("datatable-core");
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "Class extension",
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith testClassExtension: function () {
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith var Class = Y.Base.create('test-class', Y.Widget, [ Y.DataTable.Core ]),
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith instance = new Class(),
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith props = Y.Object.keys(Y.DataTable.Core.prototype),
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith attrs = Y.Object.keys(Y.DataTable.Core.ATTRS),
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith i;
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith instance = new Class();
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith for (i = props.length - 1; i >= 0; --i) {
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith Y.Assert.isNotUndefined(instance[props[i]]);
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith }
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith for (i = attrs.length - 1; i >= 0; --i) {
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith Y.Assert.isTrue(instance.attrAdded(attrs[i]));
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "delegate",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test table.delegate() pases through to node.delegate()": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith hold = Y.delegate,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.delegate = function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith };
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.delegate('click', function () {}, '.test-yes');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.delegate = hold;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "getCell",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getCell() passes through to bodyView": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass = {},
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith bodyView: Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith getCell: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith return pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }).render(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith result = table.getCell('testing');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(pass, result);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "getRow",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getRow() passes through to bodyView": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass = {},
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith bodyView: Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith getRow: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith return pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }).render(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith result = table.getRow('testing');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(pass, result);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "getRecord",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass = this.pass = {},
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith bodyView: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith value: Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith getRecord: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith return pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { id: 'a1', a: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { id: 'a2', a: 2 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { id: 'a3', a: 3 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith tearDown: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getRecord(index)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(0), this.table.getRecord(0));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(1), this.table.getRecord(1));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getRecord(id)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(0), this.table.getRecord('a1'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(1), this.table.getRecord('a2'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getRecord(clientId)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(0),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.getRecord(this.table.data.item(0).get('clientId')));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.table.data.item(1),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.getRecord(this.table.data.item(1).get('clientId')));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getRecord(unknown) passes through to bodyView": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.pass, this.table.getRecord('testing'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "getColumn",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.columns = [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith 'a',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { key: 'bX', name: 'b' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { label: 'cdX', name: 'cd', children: [ 'c', 'd' ] }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ];
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: this.columns,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getColumn(key)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', this.table.getColumn('a').key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('bX', this.table.getColumn('bX').key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getColumn(name)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('bX', this.table.getColumn('b').key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('cdX', this.table.getColumn('cd').label);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getColumn(index)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', this.table.getColumn(0).key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('cdX', this.table.getColumn(2).label);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getColumn([ index, index ])": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('d', this.table.getColumn([2,1]).key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test getColumn(column)": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.getColumn(this.table.getColumn('a')).key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "render",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Table = Y.Base.create('datatable', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 1, c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 2, b: 2, c: 2 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 3, b: 3, c: 3 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith tearDown: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should create a <table>": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.table.get('contentBox').one('table');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, table);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(table.test('.yui3-datatable-table'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should fire the renderTable event": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.on('renderTable', function () { pass = true; });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should assign the instance's _tableNode property": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, this.table._tableNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should create a <caption> if configured to do so": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('caption', 'caption content').render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, this.table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('caption content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table._tableNode.one('caption').get('text'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should create a <table summary='VALUE'> if configured to do so": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('summary', 'summary content').render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('summary content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should fire renderHeader if headerView is set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('headerView', Y.View).on('renderHeader', function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should fire renderBody if bodyView is set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('bodyView', Y.View).on('renderBody', function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should fire renderFooter if footerView is set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('footerView', Y.View).on('renderFooter', function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should call render() on the headerView if set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('headerView',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })).render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should call render() on the bodyView if set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('bodyView',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })).render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "render() should call render() on the footerView if set": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var pass;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.set('footerView',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Base.create('testView', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith pass = true;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })).render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isTrue(pass);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "syncUI",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith headerView: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith value: Y.Base.create('testHeader', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith initializer: function () { this.count = 0; },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () { this.count++; }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith bodyView: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith value: Y.Base.create('testBody', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith initializer: function () { this.count = 0; },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () { this.count++; }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith footerView: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith value: Y.Base.create('testFooter', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith initializer: function () { this.count = 0; },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith render: function () { this.count++; }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith })
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [{ a: 1 }]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }).render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith tearDown: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "syncUI should call render() on all views": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, this.table.head.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, this.table.body.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, this.table.foot.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.table.syncUI();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, this.table.head.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, this.table.body.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, this.table.foot.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "caption attribute",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.withCaption = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith caption: 'caption content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.noCaption = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith tearDown: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.withCaption.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.noCaption.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('caption', VALUE) should update UI": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.withCaption.render(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith caption = table._captionNode;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, caption);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('caption content', caption.get('text'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', 'new caption content');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('new caption content', caption.get('text'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table._tableNode, caption.get('parentNode'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('caption', VALUE) after unset at render() should add <caption>": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.noCaption.render(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith caption;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isNull(table._tableNode.one('caption'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', 'new caption content');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith caption = table._tableNode.one('caption');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, caption);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('new caption content', caption.get('text'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table._tableNode, caption.get('parentNode'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('caption', FALSEY_VALUE) after set at render() should remove <caption>": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.withCaption.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('caption content', table._captionNode.get('text'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', '');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isNull(table._tableNode.one('caption'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', 'back');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.Node, table._tableNode.one('caption'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', null);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isNull(table._tableNode.one('caption'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('caption', FALSEY_VALUE) after unset at render() should do nothing": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.noCaption.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('caption', '');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table._captionNode);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isNull(table._tableNode.one('caption'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "columns attribute",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "string columns should be converted to objects": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', { key: 'b' } ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns = table.get('columns'),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith column = table.getColumn(0);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(columns[0]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(column);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(columns[0], column);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', column.key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test columnset pass through": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columnset: ['a', { key: 'b' } ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns = table.get('columns'),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith column = table.getColumn(0);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(columns, table.get('columnset'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(columns[0]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(column);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(columns[0], column);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', column.key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "duplicate keys should have unique column ids": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith 'a',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { key: 'a' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { children: [ 'a', { key: 'a' } ] }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns = table.get('columns');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(columns[0], table.getColumn('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', columns[0].key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', columns[1].key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', columns[2].children[0].key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', columns[2].children[1].key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', columns[0]._id);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a1', columns[1]._id);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a2', columns[2].children[0]._id);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a3', columns[2].children[1]._id);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "child columns should get _parent property pointing to their parent": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith 'a',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: 'bcdX',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith children: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith 'b',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { name: 'cdX', children: [ 'c', 'd'] }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns = table.get('columns');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table.getColumn('bcdX'), table.getColumn('b')._parent);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table.getColumn('bcdX'), table.getColumn('cdX')._parent);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table.getColumn('cdX'), table.getColumn('c')._parent);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table.getColumn('cdX'), table.getColumn('d')._parent);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('columns', VALUE) should update getColumn(NAME) map": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columnA = table.getColumn('a'),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columnB = table.getColumn('b'),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('columns', ['b', 'a', 'c']);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns = table.get('columns');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areNotSame(columnA, table.getColumn('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areNotSame(columnB, table.getColumn('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.getColumn('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isNull(table.getColumn('a1'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "get('columns.KEY') should return column object based on _id": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith 'a',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: 'bcdX',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith children: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { key: 'b', name: 'bX' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { name: 'cdX', children: [ 'c', 'a'] }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.bcdX'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.bX'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.cdX'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isObject(table.get('columns.a1'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test col.field alias for col.name": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { key: 'a', field: 'aX' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { key: 'b', name: 'aX' }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('a', table.getColumn('aX').key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('b', table.getColumn('aX1').key);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "data attribute",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var modelList = new Y.ModelList();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.data = [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: true, c: 'string #1' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 2, b: false, c: 'string #2' }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ];
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList.model = Y.Base.create('testModel', Y.Model, [], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith a: {},
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith b: {},
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith c: {}
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList.reset(this.data, { silent: true });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.modelList = modelList;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test array as data value": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data : this.data
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.get('data'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(true, table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(false, table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #1', table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #2', table.getRecord(1).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test ModelList passed as data value": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data : this.modelList
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.get('data'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(true, table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(false, table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #1', table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #2', table.getRecord(1).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('data', array) should update the existing ModelList": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList = table.data;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(0, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', this.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('data', modelList) should replace the existing ModelList": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList = table.data;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(0, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', this.modelList);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(this.modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.data.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('data', garbage) should do nothing": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: this.data
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList = table.data;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', new Date());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', "not an array or ModelList");
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', NaN);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(modelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, modelList.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('data', modelList) after render() should update view modelList attrs": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var View = Y.Base.create('testHeader', Y.View, [], {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith initializer: function () { this.count = 0; }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setter: function () { this.count++; }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith headerView: View,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith bodyView: View,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith footerView: View,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: this.data
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }).render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(0, table.head.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(0, table.body.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(0, table.foot.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('data', this.modelList);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith // 0 to 2 because lazy assignment calls the setter the first time
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith // the modelList is fetched, which happens to be as part of the
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith // set() logic. So the setter is called for the original value to
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith // populate the change event's e.prevVal.
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.head.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.body.count);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.foot.count);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith },
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith "set('data', modelList) should fire a dataChange": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var model = Y.Base.create('test-model', Y.Model, [], {}, {
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith ATTRS: { a: {}, b: {}, c: {} } }),
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith modelList = new Y.ModelList(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith instance = new this.Table({
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith columns: ['a', 'b', 'c'],
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith data: [{ a: 1, b: 1, c: 1 }]
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith }),
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith fired;
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith instance.after('dataChange', function (e) {
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.areSame(modelList, e.newVal);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith fired = true;
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith });
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith modelList.model = model;
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith modelList.add([{ a: 2, b: 2, c: 2 }]);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.isInstanceOf(Y.ModelList, instance.data);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.areSame(1, instance.data.item(0).get('a'));
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith instance.set('data', modelList);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.areSame(modelList, instance.data);
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.areSame(2, instance.data.item(0).get('a'));
f3d36b6104651e81a5aed66ab831f518ef175906Luke Smith Y.Assert.isTrue(fired);
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith },
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test recordset pass through": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith recordset: this.data
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith recordset = new Y.Recordset({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith records: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 4, b: 4, c: 4 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.data);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isInstanceOf(Y.ModelList, table.get('data'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.data.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(true, table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(false, table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #1', table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string #2', table.getRecord(1).get('c'));
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('recordset', recordset);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.data.size());
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(4, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(4, table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(4, table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "recordType attribute",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test instantiation with recordType: object": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith recordType: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith a: { setter: function (val) { return +val; } },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith b: { value: 'b default' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith c: {}
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 'string', c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: '2', c: 2 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string', table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('b default', table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test instantiation with recordType: array": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith recordType: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 1, c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 2, b: 2, c: 2 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "test instantiation with recordType: Model": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Model = Y.Base.create('testModel', Y.Model, [], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith a: { setter: function (val) { return +val; } },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith b: { value: 'b default' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith c: {}
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith recordType: Model,
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 'string', c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: '2', c: 2 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(Model, table.data.model);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('string', table.getRecord(0).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(1, table.getRecord(0).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('a'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('b default', table.getRecord(1).get('b'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(2, table.getRecord(1).get('c'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "recordType should default from data modelList.model": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var modelList = new Y.ModelList(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table;
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList.model = Y.Base.create('testModel', Y.Model, [], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith a: { setter: function (val) { return +val; } },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith b: { value: 'b default' },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith c: {}
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList.reset([
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 'string', c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: '2', c: 2 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]);
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: modelList
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
6b7811f205ca945d67f8158d2d2b6b11f77cd2faLuke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame(table.get('recordType'), table.data.model);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "recordType should default from keys of first object in data array": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: [
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 1, b: 1, c: 1 },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith { a: 2, b: 2, c: 2 }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ]
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "recordType should default from columns if no data is supplied": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a', 'b', 'c', 'a']
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith // including dup columns by their _id
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c', 'a1'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "recordType should default via change event if recordType, columns, and data are unset": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = new this.Table(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList = new Y.ModelList();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith modelList.model = Y.Base.create('test-model', Y.Model, [], {}, {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith ATTRS: { a: {}, b: {}, c: {} }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.isUndefined(table.get('recordType'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('recordType', ['a', 'b', 'c']);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.ArrayAssert.itemsAreSame(['a', 'b', 'c'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Object.keys(table.get('recordType').ATTRS));
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith }
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smithsuite.add(new Y.Test.Case({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith name: "summary attribute",
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith setUp: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var Table = Y.Base.create('table', Y.Widget, [Y.DataTable.Core]);
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.withSummary = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith summary: 'summary content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.noSummary = new Table({
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith columns: ['a'],
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith data: []
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith });
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith tearDown: function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.withCaption.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith this.noCaption.destroy();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('summary', VALUE) should update UI": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.withSummary.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('summary content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('summary', 'new summary content');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('new summary content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('summary', VALUE) after unset at render() should add table summary": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.noSummary.render(),
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith summary;
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('', table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('summary', 'new summary content');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('new summary content',
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('summary', '') after set at render() should empty table summary": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.withSummary.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('summary', '');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('', table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith },
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith "set('summary', '') after unset at render() should do nothing": function () {
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith var table = this.noSummary.render();
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith table.set('summary', '');
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith Y.Assert.areSame('', table._tableNode.getAttribute('summary'));
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith }
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith}));
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke SmithY.Test.Runner.add(suite);
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
6ed8155c20400990c7e65faa4b40aef98c5b5136Luke Smith
75ae44e882c66d6b0f2e1066d30ead63e58c2056Luke Smith}, '@VERSION@' ,{requires:['widget', 'base-build', 'datatable-core', 'view', 'recordset']});