datatable-mutable-tests.js revision 11ef335b17a11da1b70c6a80cabe20ef74058481
11ef335b17a11da1b70c6a80cabe20ef74058481Luke SmithYUI.add('datatable-mutable-tests', function(Y) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithvar suite = new Y.Test.Suite("datatable-mutable");
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "lifecycle and instantiation",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "Y.DataTable should be augmented": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith new Y.DataTable().hasImpl(Y.DataTable.Mutable));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "Y.DataTable.Base should not be augmented": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith new Y.DataTable.Base().hasImpl(Y.DataTable.Mutable));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "Y.DataTable constructor should not error": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = new Y.DataTable({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns: ['a'],
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith data: [{a:1}]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isInstanceOf(Y.DataTable, table);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(table.hasImpl(Y.DataTable.Mutable));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test autoSync values": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var config = {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns: ['a'],
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith data: [{a:1}]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }, table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table = new Y.DataTable(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith config.autoSync = false;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table = new Y.DataTable(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith config.autoSync = true;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table = new Y.DataTable(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith config.autoSync = 'bogus';
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table = new Y.DataTable(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith config.autoSync = { create: true, update: true, 'delete': false };
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table = new Y.DataTable(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test set('autoSync')": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = new Y.DataTable({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns: ['a'],
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith data: [{a:1}]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.set('autoSync', false);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isFalse(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.set('autoSync', true);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.set('autoSync', 'add');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.set('autoSync', { create: true, update: true, 'delete': false });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(table.get('autoSync'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "addColumn",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith setUp: function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table = new Y.DataTable({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns: ['a', 'b', 'c'],
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith data: [{ a: 1, b: 2, c: 3 }]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith tearDown: function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table.destroy();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn() does nothing": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var columns = this.table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table.addColumn();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(columns, this.table.get('columns'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, this.table.get('columns').length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(string)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('d', table.get('columns.d.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, Y.Array.indexOf(columns, table.get('columns.d')));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(config)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ key: 'd' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('d', table.get('columns.d.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, Y.Array.indexOf(columns, table.get('columns.d')));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(string, number)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d', 1);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('d', table.get('columns.d.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(1, Y.Array.indexOf(columns, table.get('columns.d')));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(config, number)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ key: 'd' }, 1);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('d', table.get('columns.d.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(1, Y.Array.indexOf(columns, table.get('columns.d')));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(string, [number, number])": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns, column;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith // Can't resolve [3, 1]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('f', [3, 1]);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isNull(table.getColumn('f'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ name: 'parent', children: ['d', 'e'] });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('f', [3, 1]);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('f'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('f', table.get('columns.f.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column = table.get('columns.f');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(-1, Y.Array.indexOf(columns, column));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(1, Y.Array.indexOf(columns[3].children, column));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(6, table._displayColumns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test addColumn(config, [number, number])": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns, column;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith // Can't resolve [3, 1]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ key: 'f' }, [3, 1]);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isNull(table.getColumn('f'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ name: 'parent', children: ['d', 'e'] });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ key: 'f' }, [3, 1]);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.getColumn('f'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('f', table.get('columns.f.key'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns = table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column = table.get('columns.f');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(-1, Y.Array.indexOf(columns, column));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(1, Y.Array.indexOf(columns[3].children, column));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(4, columns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(6, table._displayColumns.length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "addColumn event should fire": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith onFired = false,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith afterFired = false;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('addColumn', function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith onFired = true;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.after('addColumn', function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith afterFired = true;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(onFired);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(afterFired);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "addColumn event should have column config and index": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column, index;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('addColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column = e.column;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith index = e.index;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(table.get('columns.d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(column);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(column, table.get('columns.d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, index);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "addColumn event should be preventable": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('addColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith e.preventDefault();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isUndefined(table.get('columns.d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "addColumn event e.index modification should update destination": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('addColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith e.index = 1;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn('d', 2);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(1, Y.Array.indexOf(table.get('columns'), table.get('columns.d')));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "addColumn should be chainable": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(this.table, this.table.addColumn('d'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "modifyColumn",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith setUp: function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table = new Y.DataTable({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith columns: [{ key: 'a', foo: 'foo' }, 'b', 'c'],
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith data: [{ a: 1, b: 2, c: 3 }]
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith tearDown: function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table.destroy();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test modifyColumn() does nothing": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var columns = this.table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table.modifyColumn();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(columns, this.table.get('columns'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, this.table.get('columns').length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('foo', this.table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test modifyColumn(string) does nothing": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var columns = this.table.get('columns');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith this.table.modifyColumn('a');
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(columns, this.table.get('columns'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(3, this.table.get('columns').length);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('foo', this.table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test modifyColumn(string, obj)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn('a', { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('bar', table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test modifyColumn(number, obj)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn(0, { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('bar', table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "test modifyColumn([number, number], obj)": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.addColumn({ children: [ { key: 'd', foo: 'A' }, 'e' ] });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn([3, 0], { foo: 'B' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('B', table.get('columns.d.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "modifyColumn event should fire": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith onFired = false,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith afterFired = false;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('modifyColumn', function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith onFired = true;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.after('modifyColumn', function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith afterFired = true;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn('a', { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(onFired);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isTrue(afterFired);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "modifyColumn event should have column config and newColumnDef": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table,
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column, config;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('modifyColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith column = e.column;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith config = e.newColumnDef;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn('a', { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('a', column);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.isObject(config);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "modifyColumn event should be preventable": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('modifyColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith e.preventDefault();
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn('a', { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('foo', table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "modifyColumn event e.newColumnDef modification should apply": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith var table = this.table;
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.on('modifyColumn', function (e) {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith e.newColumnDef = { bar: 'bar' };
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith table.modifyColumn('a', { foo: 'bar' });
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('foo', table.get('columns.a.foo'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame('bar', table.get('columns.a.bar'));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith },
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "modifyColumn should be chainable": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith Y.Assert.areSame(this.table, this.table.modifyColumn('a', {foo: 'B'}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "removeColumn",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "moveColumn",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "addRow",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "addRows",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "modifyRow",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smithsuite.add(new Y.Test.Case({
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith name: "removeRow",
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith "": function () {
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith }
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}));
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke SmithY.Test.Runner.add(suite);
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith
11ef335b17a11da1b70c6a80cabe20ef74058481Luke Smith}, '@VERSION@' ,{requires:['datatable-mutable', 'test']});