254 lines
7.2 KiB
JavaScript
254 lines
7.2 KiB
JavaScript
|
(function() {
|
||
|
var panel;
|
||
|
|
||
|
module("tinymce.ui.Collection", {
|
||
|
setupModule: function() {
|
||
|
panel = tinymce.ui.Factory.create({
|
||
|
type: 'panel',
|
||
|
items: [
|
||
|
{type: 'button', name: 'button1', text: 'button1', classes: 'class1', disabled: true},
|
||
|
{type: 'button', name: 'button2', classes: 'class1 class2'},
|
||
|
{type: 'button', name: 'button3', classes: 'class2 class1 class3'},
|
||
|
|
||
|
{type: 'buttongroup', name: 'buttongroup1', items: [
|
||
|
{type: 'button', name: 'button4'},
|
||
|
{type: 'button', name: 'button5'},
|
||
|
{type: 'button', name: 'button6'}
|
||
|
]},
|
||
|
|
||
|
{type: 'buttongroup', name: 'buttongroup2', items: [
|
||
|
{type: 'button', name: 'button7'},
|
||
|
{type: 'button', name: 'button8'},
|
||
|
{type: 'button', name: 'button9'}
|
||
|
]},
|
||
|
|
||
|
{type: 'toolbar', name: 'toolbar1', items: [
|
||
|
{type: 'buttongroup', name: 'buttongroup3', items: [
|
||
|
{type: 'button', name: 'button10', disabled: true},
|
||
|
{type: 'button', name: 'button11'},
|
||
|
{type: 'button', name: 'button12', classes: 'class4'}
|
||
|
]}
|
||
|
]}
|
||
|
]
|
||
|
}).renderTo(document.getElementById('view'));
|
||
|
},
|
||
|
|
||
|
teardown: function() {
|
||
|
tinymce.dom.Event.clean(document.getElementById('view'));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("Constructor", function() {
|
||
|
equal(new tinymce.ui.Collection().length, 0);
|
||
|
equal(new tinymce.ui.Collection(panel.find('button').toArray()).length, 12);
|
||
|
equal(new tinymce.ui.Collection(panel.find('button')).length, 12);
|
||
|
equal(new tinymce.ui.Collection(panel.find('button:first')[0]).length, 1);
|
||
|
equal(new tinymce.ui.Collection(panel.find('button:first')[0])[0].type, 'button');
|
||
|
});
|
||
|
|
||
|
test("add", function() {
|
||
|
var collection = new tinymce.ui.Collection([panel, panel]);
|
||
|
|
||
|
equal(collection.add(panel).length, 3);
|
||
|
equal(collection.add([panel, panel]).length, 5);
|
||
|
});
|
||
|
|
||
|
test("set", function() {
|
||
|
var collection = new tinymce.ui.Collection([panel, panel]);
|
||
|
|
||
|
equal(collection.set(panel).length, 1);
|
||
|
equal(collection.set([panel, panel]).length, 2);
|
||
|
});
|
||
|
|
||
|
test("filter", function() {
|
||
|
equal(panel.find('button').filter('*:first').length, 4);
|
||
|
equal(panel.find('button').filter('buttongroup button').length, 9);
|
||
|
equal(panel.find('button').filter('*').length, 12);
|
||
|
equal(panel.find('button').filter('nomatch').length, 0);
|
||
|
equal(panel.find('button').filter(function(ctrl) {return ctrl.settings.name == "button7";}).length, 1);
|
||
|
});
|
||
|
|
||
|
test("slice", function() {
|
||
|
equal(panel.find('button').slice(1).length, 11);
|
||
|
equal(panel.find('button').slice(1)[0].name(), 'button2');
|
||
|
|
||
|
equal(panel.find('button').slice(0, 1).length, 1);
|
||
|
equal(panel.find('button').slice(0, 1)[0].name(), 'button1');
|
||
|
|
||
|
equal(panel.find('button').slice(-1).length, 1);
|
||
|
equal(panel.find('button').slice(-1)[0].name(), 'button12');
|
||
|
|
||
|
equal(panel.find('button').slice(-2).length, 2);
|
||
|
equal(panel.find('button').slice(-2)[0].name(), 'button11');
|
||
|
|
||
|
equal(panel.find('button').slice(-2, -1).length, 1);
|
||
|
equal(panel.find('button').slice(-2, -1)[0].name(), 'button11');
|
||
|
|
||
|
equal(panel.find('button').slice(1000).length, 0);
|
||
|
equal(panel.find('button').slice(-1000).length, 12);
|
||
|
});
|
||
|
|
||
|
test("eq", function() {
|
||
|
equal(panel.find('button').eq(1).length, 1);
|
||
|
equal(panel.find('button').eq(1)[0].name(), 'button2');
|
||
|
|
||
|
equal(panel.find('button').eq(-2).length, 1);
|
||
|
equal(panel.find('button').eq(-2)[0].name(), 'button11');
|
||
|
|
||
|
equal(panel.find('button').eq(1000).length, 0);
|
||
|
});
|
||
|
|
||
|
test("each", function() {
|
||
|
var count;
|
||
|
|
||
|
count = 0;
|
||
|
panel.find('button').each(function() {
|
||
|
count++;
|
||
|
});
|
||
|
|
||
|
equal(count, 12);
|
||
|
|
||
|
count = 0;
|
||
|
panel.find('nomatch').each(function() {
|
||
|
count++;
|
||
|
});
|
||
|
|
||
|
equal(count, 0);
|
||
|
|
||
|
count = 0;
|
||
|
panel.find('button').each(function(item, index) {
|
||
|
count += index;
|
||
|
});
|
||
|
|
||
|
equal(count, 66);
|
||
|
|
||
|
count = 0;
|
||
|
panel.find('button').each(function(item) {
|
||
|
if (item.type == 'button') {
|
||
|
count++;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
equal(count, 12);
|
||
|
|
||
|
count = 0;
|
||
|
panel.find('button').each(function(item, index) {
|
||
|
count++;
|
||
|
|
||
|
if (index == 3) {
|
||
|
return false;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
equal(count, 4);
|
||
|
});
|
||
|
|
||
|
test("toArray", function() {
|
||
|
equal(panel.find('button').toArray().length, 12);
|
||
|
equal(panel.find('button').toArray().concat, Array.prototype.concat);
|
||
|
});
|
||
|
|
||
|
test("fire/on/off", function() {
|
||
|
var value;
|
||
|
|
||
|
value = 0;
|
||
|
panel.find('button').off();
|
||
|
panel.find('button#button1,button#button2').on('test', function(args) {
|
||
|
value += args.value;
|
||
|
});
|
||
|
panel.find('button#button1').fire('test', {value: 42});
|
||
|
equal(value, 42);
|
||
|
|
||
|
value = 0;
|
||
|
panel.find('button').off();
|
||
|
panel.find('button#button1,button#button2').on('test', function(args) {
|
||
|
value += args.value;
|
||
|
});
|
||
|
panel.find('button').fire('test', {value: 42});
|
||
|
equal(value, 84);
|
||
|
|
||
|
value = 0;
|
||
|
panel.find('button').off();
|
||
|
panel.find('button#button1,button#button2').on('test', function(args) {
|
||
|
value += args.value;
|
||
|
});
|
||
|
panel.find('button#button1').off('test');
|
||
|
panel.find('button').fire('test', {value: 42});
|
||
|
equal(value, 42);
|
||
|
|
||
|
panel.find('button').off();
|
||
|
|
||
|
value = 0;
|
||
|
panel.find('button').fire('test', {value: 42});
|
||
|
equal(value, 0);
|
||
|
});
|
||
|
|
||
|
test("show/hide", function() {
|
||
|
panel.find('button#button1,button#button2').hide();
|
||
|
equal(panel.find('button:not(:visible)').length, 2);
|
||
|
|
||
|
panel.find('button#button1').show();
|
||
|
equal(panel.find('button:not(:visible)').length, 1);
|
||
|
|
||
|
panel.find('button#button2').show();
|
||
|
});
|
||
|
|
||
|
test("text", function() {
|
||
|
equal(panel.find('button#button1,button#button2').text(), 'button1');
|
||
|
equal(panel.find('button#button2').text('button2').text(), 'button2');
|
||
|
|
||
|
equal(panel.find('button#button2,button#button3').text('test').text(), 'test');
|
||
|
equal(panel.find('button#button3').text(), 'test');
|
||
|
});
|
||
|
|
||
|
test("disabled", function() {
|
||
|
ok(panel.find('button#button1').disabled());
|
||
|
ok(!panel.find('button#button2').disabled());
|
||
|
ok(panel.find('button#button2').disabled(true).disabled());
|
||
|
|
||
|
panel.find('button#button2').disabled(false);
|
||
|
});
|
||
|
|
||
|
test("visible", function() {
|
||
|
ok(panel.find('button#button2').visible());
|
||
|
ok(!panel.find('button#button2').visible(false).visible());
|
||
|
|
||
|
panel.find('button#button2').visible(true);
|
||
|
});
|
||
|
|
||
|
test("active", function() {
|
||
|
ok(!panel.find('button#button2').active());
|
||
|
ok(panel.find('button#button2').active(true).active());
|
||
|
|
||
|
panel.find('button#button2').active(false);
|
||
|
});
|
||
|
|
||
|
test("name", function() {
|
||
|
equal(panel.find('button#button1').name(), 'button1');
|
||
|
equal(panel.find('button#button2').name('buttonX').name(), 'buttonX');
|
||
|
|
||
|
panel.find('button#buttonX').name('button2');
|
||
|
});
|
||
|
|
||
|
test("addClass/removeClass/hasClass", function() {
|
||
|
panel.find('button#button1').addClass('test');
|
||
|
ok(panel.find('button#button1').hasClass('test'));
|
||
|
ok(!panel.find('button#button1').hasClass('nomatch'));
|
||
|
panel.find('button#button1').removeClass('test');
|
||
|
ok(!panel.find('button#button1').hasClass('test'));
|
||
|
});
|
||
|
|
||
|
test("prop", function() {
|
||
|
ok(panel.find('button#button1').prop('disabled'));
|
||
|
equal(panel.find('button#button1').prop('name'), 'button1');
|
||
|
equal(panel.find('button#button1').prop('name', 'buttonX').prop('name'), 'buttonX');
|
||
|
panel.find('button#buttonX').prop('name', 'button1');
|
||
|
equal(panel.find('button#button1').prop('missingProperty'), undefined);
|
||
|
});
|
||
|
|
||
|
test("exec", function() {
|
||
|
ok(!panel.find('button#button1').exec('disabled', false).disabled());
|
||
|
panel.find('button#button1').disabled(true);
|
||
|
});
|
||
|
})();
|