| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /* global demo */
- casper.test.begin('Repeated Items', 50, function (test) {
-
- casper
- .start('./fixtures/repeated-items.html')
- .then(function () {
- // initial values
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 A')
- test.assertSelectorHasText('.item:nth-child(2)', '1 B')
- test.assertSelectorHasText('.item:nth-child(3)', '2 C')
- })
- .thenClick('.push', function () {
- test.assertSelectorHasText('.count', '4')
- test.assertSelectorHasText('.item:nth-child(4)', '3 0')
- })
- .thenClick('.shift', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 B')
- test.assertSelectorHasText('.item:nth-child(2)', '1 C')
- test.assertSelectorHasText('.item:nth-child(3)', '2 0')
- })
- .thenClick('.pop', function () {
- test.assertSelectorHasText('.count', '2')
- test.assertSelectorHasText('.item:nth-child(1)', '0 B')
- test.assertSelectorHasText('.item:nth-child(2)', '1 C')
- })
- .thenClick('.unshift', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 1')
- test.assertSelectorHasText('.item:nth-child(2)', '1 B')
- test.assertSelectorHasText('.item:nth-child(3)', '2 C')
- })
- .thenClick('.splice', function () {
- test.assertSelectorHasText('.count', '4')
- test.assertSelectorHasText('.item:nth-child(1)', '0 1')
- test.assertSelectorHasText('.item:nth-child(2)', '1 2')
- test.assertSelectorHasText('.item:nth-child(3)', '2 3')
- test.assertSelectorHasText('.item:nth-child(4)', '3 C')
- })
- .thenClick('.remove', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 1')
- test.assertSelectorHasText('.item:nth-child(2)', '1 2')
- test.assertSelectorHasText('.item:nth-child(3)', '2 3')
- })
- .thenClick('.set', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 1')
- test.assertSelectorHasText('.item:nth-child(2)', '1 2')
- test.assertSelectorHasText('.item:nth-child(3)', '2 4')
- })
- .thenClick('.reverse', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 4')
- test.assertSelectorHasText('.item:nth-child(2)', '1 2')
- test.assertSelectorHasText('.item:nth-child(3)', '2 1')
- })
- .thenClick('.sort', function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 1')
- test.assertSelectorHasText('.item:nth-child(2)', '1 2')
- test.assertSelectorHasText('.item:nth-child(3)', '2 4')
- })
- .then(function () {
- // make sure things work on empty array
- this.click('.pop')
- this.click('.pop')
- this.click('.pop')
- this.click('.pop')
- this.click('.shift')
- this.click('.remove')
- this.click('.sort')
- this.click('.reverse')
- this.click('.splice')
- })
- .then(function () {
- test.assertSelectorHasText('.count', '2')
- test.assertSelectorHasText('.item:nth-child(1)', '0 5')
- test.assertSelectorHasText('.item:nth-child(2)', '1 6')
- })
- // test swap entire array
- .thenEvaluate(function () {
- demo.items = [{title:'A'}, {title:'B'}, {title:'C'}]
- })
- .then(function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 A')
- test.assertSelectorHasText('.item:nth-child(2)', '1 B')
- test.assertSelectorHasText('.item:nth-child(3)', '2 C')
- })
- // test swap array with old elements
- // should reuse existing VMs!
- .thenEvaluate(function () {
- window.oldVMs = demo.$.items
- demo.items = [demo.items[2],demo.items[1],demo.items[0]]
- })
- .then(function () {
- test.assertSelectorHasText('.count', '3')
- test.assertSelectorHasText('.item:nth-child(1)', '0 C')
- test.assertSelectorHasText('.item:nth-child(2)', '1 B')
- test.assertSelectorHasText('.item:nth-child(3)', '2 A')
- test.assertEval(function () {
- var i = window.oldVMs.length
- while (i--) {
- if (window.oldVMs[i] !== demo.$.items[2 - i]) {
- return false
- }
- }
- return true
- })
- })
- .run(function () {
- test.done()
- })
- })
|