datatable-mutable-tests.js revision 7ec3441e48d9669a482acaafd2eef499d699c8b8
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark AndrewsYUI.add('datatable-mutable-tests', function(Y) {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox Uservar suite = new Y.Test.Suite("datatable-mutable");
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox Usersuite.add(new Y.Test.Case({
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User name: "lifecycle and instantiation",
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "Y.DataTable should be augmented": function () {
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews Y.Assert.isTrue(
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews new Y.DataTable().hasImpl(Y.DataTable.Mutable));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews },
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "Y.DataTable.Base should not be augmented": function () {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Y.Assert.isFalse(
cd32f419a8a5432fbb139f56ee73cbf68b9350ccTinderbox User new Y.DataTable.Base().hasImpl(Y.DataTable.Mutable));
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User },
e108f2ec640e1acb54999c0ade58af606149956dTinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "Y.DataTable constructor should not error": function () {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews var table = new Y.DataTable({
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews columns: ['a'],
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews data: [{a:1}]
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews });
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.isInstanceOf(Y.DataTable, table);
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User Y.Assert.isTrue(table.hasImpl(Y.DataTable.Mutable));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews },
e108f2ec640e1acb54999c0ade58af606149956dTinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "test autoSync values": function () {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews var config = {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews columns: ['a'],
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews data: [{a:1}]
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews }, table;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews table = new Y.DataTable(config);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.isFalse(table.get('autoSync'));
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews config.autoSync = false;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User table = new Y.DataTable(config);
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Y.Assert.isFalse(table.get('autoSync'));
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User config.autoSync = true;
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User table = new Y.DataTable(config);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.isTrue(table.get('autoSync'));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews config.autoSync = 'bogus';
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt table = new Y.DataTable(config);
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.isFalse(table.get('autoSync'));
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews config.autoSync = { create: true, update: true, 'delete': false };
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews table = new Y.DataTable(config);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.isFalse(table.get('autoSync'));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews },
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "test set('autoSync')": function () {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt var table = new Y.DataTable({
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews columns: ['a'],
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews data: [{a:1}]
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isFalse(table.get('autoSync'));
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.set('autoSync', false);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isFalse(table.get('autoSync'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.set('autoSync', true);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isTrue(table.get('autoSync'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.set('autoSync', 'add');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isTrue(table.get('autoSync'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.set('autoSync', { create: true, update: true, 'delete': false });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isTrue(table.get('autoSync'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User }
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User}));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox Usersuite.add(new Y.Test.Case({
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User name: "addColumn",
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User setUp: function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User this.table = new Y.DataTable({
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns: ['a', 'b', 'c'],
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User data: [{ a: 1, b: 2, c: 3 }]
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User tearDown: function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User this.table.destroy();
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn() does nothing": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var columns = this.table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User this.table.addColumn();
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(columns, this.table.get('columns'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(3, this.table.get('columns').length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(string)": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn('d');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('d'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame('d', table.get('columns.d.key'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(3, Y.Array.indexOf(columns, table.get('columns.d')));
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(config)": function () {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User var table = this.table,
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User columns;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ key: 'd' });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('d'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame('d', table.get('columns.d.key'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(3, Y.Array.indexOf(columns, table.get('columns.d')));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(string, number)": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn('d', 1);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('d'));
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User Y.Assert.areSame('d', table.get('columns.d.key'));
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User columns = table.get('columns');
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User Y.Assert.areSame(1, Y.Array.indexOf(columns, table.get('columns.d')));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(config, number)": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ key: 'd' }, 1);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('d'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame('d', table.get('columns.d.key'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(1, Y.Array.indexOf(columns, table.get('columns.d')));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(string, [number, number])": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns, column;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User // Can't resolve [3, 1]
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn('f', [3, 1]);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isNull(table.getColumn('f'));
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(3, columns.length);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ name: 'parent', children: ['d', 'e'] });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn('f', [3, 1]);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('f'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame('f', table.get('columns.f.key'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User column = table.get('columns.f');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(-1, Y.Array.indexOf(columns, column));
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Y.Assert.areSame(1, Y.Array.indexOf(columns[3].children, column));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(6, table._displayColumns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User },
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "test addColumn(config, [number, number])": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns, column;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User // Can't resolve [3, 1]
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ key: 'f' }, [3, 1]);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isNull(table.getColumn('f'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(3, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ name: 'parent', children: ['d', 'e'] });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn({ key: 'f' }, [3, 1]);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isObject(table.getColumn('f'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame('f', table.get('columns.f.key'));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User columns = table.get('columns');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User column = table.get('columns.f');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(-1, Y.Array.indexOf(columns, column));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(1, Y.Array.indexOf(columns[3].children, column));
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(4, columns.length);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.areSame(6, table._displayColumns.length);
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "addColumn event should fire": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User onFired = false,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User afterFired = false;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.on('addColumn', function () {
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User onFired = true;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.after('addColumn', function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User afterFired = true;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User });
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User table.addColumn('d');
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isTrue(onFired);
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User Y.Assert.isTrue(afterFired);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User },
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User "addColumn event should have column config and index": function () {
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User var table = this.table,
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User column, index;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.on('addColumn', function (e) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User column = e.column;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User index = e.index;
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User });
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User
3241ddcf9354c5ab50f4df5a656e72a5c68e172bTinderbox User table.addColumn('d');
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Y.Assert.isObject(table.get('columns.d'));
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User Y.Assert.isObject(column);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Y.Assert.areSame(column, table.get('columns.d'));
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Y.Assert.areSame(3, index);
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox User },
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews "addColumn event should be preventable": function () {
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews var table = this.table;
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews table.on('addColumn', function (e) {
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews e.preventDefault();
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt });
057cafaa3df7be7a6dcca71fbaf8fb498fd83518Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User table.addColumn('d');
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User Y.Assert.isUndefined(table.get('columns.d'));
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User },
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "addColumn event e.index modification should update destination": function () {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User var table = this.table;
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User table.on('addColumn', function (e) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User e.index = 1;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews });
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews table.addColumn('d', 2);
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Y.Assert.areSame(1, Y.Array.indexOf(table.get('columns'), table.get('columns.d')));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews },
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "addColumn should be chainable": function () {
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User Y.Assert.areSame(this.table, this.table.addColumn('d'));
cd32f419a8a5432fbb139f56ee73cbf68b9350ccTinderbox User }
e108f2ec640e1acb54999c0ade58af606149956dTinderbox User}));
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssuite.add(new Y.Test.Case({
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews name: "modifyColumn",
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User
1e9517ea2156b990be21f44676d3370318eacf17Tinderbox User setUp: function () {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews this.table = new Y.DataTable({
e108f2ec640e1acb54999c0ade58af606149956dTinderbox User columns: [{ key: 'a', foo: 'foo' }, 'b', 'c'],
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews data: [{ a: 1, b: 2, c: 3 }]
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews });
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews },
c2258eedf2d9d0207b45b90014f8fde5413b41a3Tinderbox User
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews tearDown: function () {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews this.table.destroy();
},
"test modifyColumn() does nothing": function () {
var columns = this.table.get('columns');
this.table.modifyColumn();
Y.Assert.areSame(columns, this.table.get('columns'));
Y.Assert.areSame(3, this.table.get('columns').length);
Y.Assert.areSame('foo', this.table.get('columns.a.foo'));
},
"test modifyColumn(string) does nothing": function () {
var columns = this.table.get('columns');
this.table.modifyColumn('a');
Y.Assert.areSame(columns, this.table.get('columns'));
Y.Assert.areSame(3, this.table.get('columns').length);
Y.Assert.areSame('foo', this.table.get('columns.a.foo'));
},
"test modifyColumn(string, obj)": function () {
var table = this.table;
table.modifyColumn('a', { foo: 'bar' });
Y.Assert.areSame('bar', table.get('columns.a.foo'));
},
"test modifyColumn(number, obj)": function () {
var table = this.table;
table.modifyColumn(0, { foo: 'bar' });
Y.Assert.areSame('bar', table.get('columns.a.foo'));
},
"test modifyColumn([number, number], obj)": function () {
var table = this.table;
table.addColumn({ children: [ { key: 'd', foo: 'A' }, 'e' ] });
table.modifyColumn([3, 0], { foo: 'B' });
Y.Assert.areSame('B', table.get('columns.d.foo'));
},
"modifyColumn event should fire": function () {
var table = this.table,
onFired = false,
afterFired = false;
table.on('modifyColumn', function () {
onFired = true;
});
table.after('modifyColumn', function () {
afterFired = true;
});
table.modifyColumn('a', { foo: 'bar' });
Y.Assert.isTrue(onFired);
Y.Assert.isTrue(afterFired);
},
"modifyColumn event should have column config and newColumnDef": function () {
var table = this.table,
column, config;
table.on('modifyColumn', function (e) {
column = e.column;
config = e.newColumnDef;
});
table.modifyColumn('a', { foo: 'bar' });
Y.Assert.areSame('a', column);
Y.Assert.isObject(config);
},
"modifyColumn event should be preventable": function () {
var table = this.table;
table.on('modifyColumn', function (e) {
e.preventDefault();
});
table.modifyColumn('a', { foo: 'bar' });
Y.Assert.areSame('foo', table.get('columns.a.foo'));
},
"modifyColumn event e.newColumnDef modification should apply": function () {
var table = this.table;
table.on('modifyColumn', function (e) {
e.newColumnDef = { bar: 'bar' };
});
table.modifyColumn('a', { foo: 'bar' });
Y.Assert.areSame('foo', table.get('columns.a.foo'));
Y.Assert.areSame('bar', table.get('columns.a.bar'));
},
"modifyColumn should be chainable": function () {
Y.Assert.areSame(this.table, this.table.modifyColumn('a', {foo: 'B'}));
}
}));
suite.add(new Y.Test.Case({
name: "removeColumn",
setUp: function () {
this.table = new Y.DataTable({
columns: [ 'a', 'b', 'c', { children: [ 'd', 'e' ] } ],
data: [{ a: 1, b: 1, c: 1, d: 1, e: 1 }]
});
},
tearDown: function () {
this.table.destroy();
},
"test removeColumn() does nothing": function () {
var table = this.table,
columns = table.get('columns');
table.removeColumn();
Y.Assert.areSame(columns, table.get('columns'));
Y.Assert.areSame(4, table.get('columns').length);
Y.Assert.isObject(table.getColumn('a'));
},
"test removeColumn(string)": function () {
var table = this.table;
table.removeColumn('a');
Y.Assert.areSame(3, table.get('columns').length);
Y.Assert.areSame(4, table._displayColumns.length);
Y.Assert.isNull(table.getColumn('a'));
table.removeColumn('d');
Y.Assert.areSame(3, table._displayColumns.length);
Y.Assert.isNull(table.getColumn('d'));
},
"test removeColumn(number)": function () {
var table = this.table;
table.removeColumn(0);
Y.Assert.areSame(3, table.get('columns').length);
Y.Assert.areSame(4, table._displayColumns.length);
Y.Assert.isNull(table.getColumn('a'));
},
"test removeColumn([number, number])": function () {
var table = this.table;
table.removeColumn([3, 0]);
Y.Assert.areSame(4, table.get('columns').length);
Y.Assert.areSame(4, table._displayColumns.length);
Y.Assert.isNull(table.getColumn('d'));
Y.Assert.isObject(table.getColumn([3, 0]));
Y.Assert.areSame('e', table.getColumn([3, 0]).key);
},
"removeColumn event should fire": function () {
var table = this.table,
onFired = false,
afterFired = false;
table.on('removeColumn', function () {
onFired = true;
});
table.after('removeColumn', function () {
afterFired = true;
});
table.removeColumn('a');
Y.Assert.isTrue(onFired);
Y.Assert.isTrue(afterFired);
},
"removeColumn event should have column config": function () {
var table = this.table,
column;
table.on('removeColumn', function (e) {
column = e.column;
});
table.removeColumn('a');
Y.Assert.areSame('a', column);
},
"removeColumn event should be preventable": function () {
var table = this.table;
table.on('removeColumn', function (e) {
e.preventDefault();
});
table.removeColumn('a');
Y.Assert.isObject(table.getColumn('a'));
},
"removeColumn event e.column modification should apply": function () {
var table = this.table;
table.on('removeColumn', function (e) {
e.column = 'a';
});
table.removeColumn('d');
Y.Assert.isNull(table.getColumn('a'));
Y.Assert.isObject(table.getColumn('d'));
},
"removeColumn should be chainable": function () {
Y.Assert.areSame(this.table, this.table.removeColumn('a'));
}
}));
suite.add(new Y.Test.Case({
name: "moveColumn",
"": function () {
}
}));
suite.add(new Y.Test.Case({
name: "addRow",
"": function () {
}
}));
suite.add(new Y.Test.Case({
name: "addRows",
"": function () {
}
}));
suite.add(new Y.Test.Case({
name: "modifyRow",
"": function () {
}
}));
suite.add(new Y.Test.Case({
name: "removeRow",
"": function () {
}
}));
Y.Test.Runner.add(suite);
}, '@VERSION@' ,{requires:['datatable-mutable', 'test']});