diff options
Diffstat (limited to 'dom/tests/mochitest/ajax/scriptaculous/test/unit/sortable_test.html')
-rw-r--r-- | dom/tests/mochitest/ajax/scriptaculous/test/unit/sortable_test.html | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/dom/tests/mochitest/ajax/scriptaculous/test/unit/sortable_test.html b/dom/tests/mochitest/ajax/scriptaculous/test/unit/sortable_test.html new file mode 100644 index 0000000000..c2bafd0b9d --- /dev/null +++ b/dom/tests/mochitest/ajax/scriptaculous/test/unit/sortable_test.html @@ -0,0 +1,205 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>script.aculo.us Unit test file</title> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <script src="../../lib/prototype.js" type="text/javascript"></script> + <script src="../../src/scriptaculous.js" type="text/javascript"></script> + <script src="../../src/unittest.js" type="text/javascript"></script> + <link rel="stylesheet" href="../test.css" type="text/css" /> +</head> +<body> +<h1>script.aculo.us Unit test file</h1> +<p> + Test of sortable functions in dragdrop.js +</p> + +<!-- Log output --> +<div id="testlog"> </div> + + +<ul id="sortable1"> + <li id="item_1" class="a">item 1</li> + <li id="item_2" class="c b">item 1<ul><li id="item_99">!!!</li></ul></li> + <li id="item_3" class="b">item 1</li> + <li id="item_xy" class="x y">item 1</li> + <!-- a comment --> +</ul> + +<div id="sortable2"> + <div id="item_4">item 4</div> <div id="item_5">item 5</div> + <img src="icon.png" alt="img"/> + <!-- a comment --> +</div> + +<div id="sortable3"> + +</div> + +<!-- + By default, _ is the only valid seperator + for the DOM ids. Complex element ids as in + the form of "some_element_id_1" should also + be parsed correctly (only the last part should + be serialized) +--> +<ul id="sortable_complex"> + <li id="a_b_item_1" class="a">item 1</li> + <li id="ab_item_2" class="c b">item 1 + <ul> + <li id="item_99">!!!</li> + </ul> + </li> + <li id="a-b-item_3z_33" class="b">item 1</li> + <li id="a-item-xy" class="x y">item 1</li> + <!-- a comment --> +</ul> + + +<ul id="sortable_specialcreate"> + <li id="y1item">item 1</li> + <li id="y2item">item 1<ul><li id="yyyy9928282hjhd">!!!</li></ul></li> +</ul> + +<ul id="sortable_specialformat"> + <li id="x1item">item 1</li> + <li id="x2item">item 1<ul><li id="xxxxx88888item">!!!</li></ul></li> +</ul> + +<!-- Tests follow --> +<script type="text/javascript" language="javascript" charset="utf-8"> +// <![CDATA[ + + new Test.Unit.Runner({ + + setup: function() { with(this) { + Sortable.create('sortable1',{only:['a','b']}); + Sortable.create('sortable2',{tag:'div'}); + Sortable.create('sortable3'); + Sortable.create('sortable_specialcreate',{ format:/(\d+)/ }); + Sortable.create('sortable_specialformat'); + Sortable.create('sortable_complex'); + }}, + + teardown: function() { with(this) { + Sortable.destroy('sortable1'); + Sortable.destroy('sortable2'); + Sortable.destroy('sortable3'); + Sortable.destroy('sortable_specialformat'); + Sortable.destroy('sortable_specialcreate'); + Sortable.destroy('sortable_complex'); + }}, + + testSortableSerializeSequenceBasics: function() { with(this) { + assertEqual('sortable1[]=1&sortable1[]=2&sortable1[]=3', Sortable.serialize('sortable1')); + + // test empty sortable + assertEqual('', Sortable.serialize('sortable3')); + assertEnumEqual([], Sortable.sequence('sortable3')); + + Element.remove('item_4'); + assertEqual('sortable2[]=5', Sortable.serialize('sortable2')); + assertEnumEqual(['5'], Sortable.sequence('sortable2')); + }}, + + testSortableSerializeFormat: function() { with(this) { + // should correctly serialize from option given to Sortable.create() + assertEqual('sortable_specialcreate[]=1&sortable_specialcreate[]=2', + Sortable.serialize('sortable_specialcreate')); + + benchmark(function(){ + Sortable.serialize('sortable_specialcreate') + },1,'Sortable.serialize'); + + // test special format given explicitly + assertEqual('sortable_specialformat[]=1&sortable_specialformat[]=2', + Sortable.serialize('sortable_specialformat', {format:/(\d+)/})); + + // return full id + assertEqual('sortable_specialformat[]=x1item&sortable_specialformat[]=x2item', + Sortable.serialize('sortable_specialformat', {format:/(.*)/})); + + // test default format given explicitly + assertEqual('sortable1[]=1&sortable1[]=2&sortable1[]=3', + Sortable.serialize('sortable1',{format:/^[^_]*_(.*)$/})); + + // Ensure default options.format handles longer, more complex list + // item IDs + assertEqual('sortable_complex[]=1&sortable_complex[]=2&sortable_complex[]=33&sortable_complex[]=', + Sortable.serialize('sortable_complex')); + }}, + + testSortableSerializeRule: function() { with(this) { + var ids = ['x','x-y','test_test','x_y_z','x_y-x_z']; + ids.each(function(id){ + assertEqual('1', + (id+'_1').match(Sortable.SERIALIZE_RULE)[1]); + }); + + assertNull('x'.match(Sortable.SERIALIZE_RULE)); + }}, + + testSortableSerializeName: function() { with(this) { + assertEqual('dumdidu[]=1&dumdidu[]=2', + Sortable.serialize('sortable_specialcreate',{name:'dumdidu'})); + }}, + + testSortableSequenceFormat: function() { with(this) { + // shauld correctly serialize from option given to Sortable.create() + assertEnumEqual(['1','2'], + Sortable.sequence('sortable_specialcreate')); + + // test special format given explicitly + assertEnumEqual(['1','2'], + Sortable.sequence('sortable_specialformat', {format:/(\d+)/})); + + // return full id + assertEnumEqual(['x1item','x2item'], + Sortable.sequence('sortable_specialformat', {format:/(.*)/})); + + // test default format given explicitly + assertEnumEqual(['1','2','3'], + Sortable.sequence('sortable1',{format:/^[^_]*_(.*)$/})); + }}, + + testSortableFindElements: function() { with(this) { + assertEqual(3, Sortable.findElements($('sortable1'),{tag:'li',only:['a','b']}).length); + benchmark(function(){ + Sortable.findElements($('sortable1'),{tag:'li',only:['a','b']}) + },1,'Sortable.findElements/1'); + + assertEqual(1, Sortable.findElements($('sortable1'),{tag:'li',only:['x']}).length); + assertEqual(1, Sortable.findElements($('sortable1'),{tag:'li',only:'a'}).length); + assertEqual(2, Sortable.findElements($('sortable1'),{tag:'li',only:'b'}).length); + assertEqual(4, Sortable.findElements($('sortable1'),{tag:'li',only:['a','b','x']}).length); + }}, + + testSortableSetSequence: function() { with(this) { + // make sure assigning current sequence is a no-op + var o = Sortable.sequence('sortable1'); + Sortable.setSequence('sortable1', ['1','2','3']); + assertEnumEqual(o, Sortable.sequence('sortable1')); + + // check new sequence + Sortable.setSequence('sortable1', ['3','2','1']); + assertEnumEqual(['3','2','1'], Sortable.sequence('sortable1')); + + // non-default format + Sortable.setSequence('sortable_specialformat', ['2','1'], { format:/(\d+)/ }); + assertEnumEqual(['2','1'], Sortable.sequence('sortable_specialformat')); + + // invalid sequence ids should be ignored + Sortable.setSequence('sortable1', ['x', '1', 'y', '2', '3', 'z']); + assertEnumEqual(['1', '2', '3'], Sortable.sequence('sortable1')); + + // elements omitted in new sequence should be cropped + Sortable.setSequence('sortable1', ['1', '3']); + assertEnumEqual(['1', '3'], Sortable.sequence('sortable1')); + }} + + }, "testlog"); +// ]]> +</script> +</body> +</html> |