repeated-items.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /* global items */
  2. casper.test.begin('Repeated Items', 44, function (test) {
  3. casper
  4. .start('./fixtures/repeated-items.html')
  5. .then(function () {
  6. // initial values
  7. test.assertSelectorHasText('.count', '3')
  8. test.assertSelectorHasText('.item:nth-child(1)', '0 A')
  9. test.assertSelectorHasText('.item:nth-child(2)', '1 B')
  10. test.assertSelectorHasText('.item:nth-child(3)', '2 C')
  11. })
  12. .thenClick('.push', function () {
  13. test.assertSelectorHasText('.count', '4')
  14. test.assertSelectorHasText('.item:nth-child(4)', '3 0')
  15. })
  16. .thenClick('.shift', function () {
  17. test.assertSelectorHasText('.count', '3')
  18. test.assertSelectorHasText('.item:nth-child(1)', '0 B')
  19. test.assertSelectorHasText('.item:nth-child(2)', '1 C')
  20. test.assertSelectorHasText('.item:nth-child(3)', '2 0')
  21. })
  22. .thenClick('.pop', function () {
  23. test.assertSelectorHasText('.count', '2')
  24. test.assertSelectorHasText('.item:nth-child(1)', '0 B')
  25. test.assertSelectorHasText('.item:nth-child(2)', '1 C')
  26. })
  27. .thenClick('.unshift', function () {
  28. test.assertSelectorHasText('.count', '3')
  29. test.assertSelectorHasText('.item:nth-child(1)', '0 1')
  30. test.assertSelectorHasText('.item:nth-child(2)', '1 B')
  31. test.assertSelectorHasText('.item:nth-child(3)', '2 C')
  32. })
  33. .thenClick('.splice', function () {
  34. test.assertSelectorHasText('.count', '4')
  35. test.assertSelectorHasText('.item:nth-child(1)', '0 1')
  36. test.assertSelectorHasText('.item:nth-child(2)', '1 2')
  37. test.assertSelectorHasText('.item:nth-child(3)', '2 3')
  38. test.assertSelectorHasText('.item:nth-child(4)', '3 C')
  39. })
  40. .thenClick('.remove', function () {
  41. test.assertSelectorHasText('.count', '3')
  42. test.assertSelectorHasText('.item:nth-child(1)', '0 1')
  43. test.assertSelectorHasText('.item:nth-child(2)', '1 2')
  44. test.assertSelectorHasText('.item:nth-child(3)', '2 3')
  45. })
  46. .thenClick('.replace', function () {
  47. test.assertSelectorHasText('.count', '3')
  48. test.assertSelectorHasText('.item:nth-child(1)', '0 1')
  49. test.assertSelectorHasText('.item:nth-child(2)', '1 2')
  50. test.assertSelectorHasText('.item:nth-child(3)', '2 4')
  51. })
  52. .thenClick('.reverse', function () {
  53. test.assertSelectorHasText('.count', '3')
  54. test.assertSelectorHasText('.item:nth-child(1)', '0 4')
  55. test.assertSelectorHasText('.item:nth-child(2)', '1 2')
  56. test.assertSelectorHasText('.item:nth-child(3)', '2 1')
  57. })
  58. .thenClick('.sort', function () {
  59. test.assertSelectorHasText('.count', '3')
  60. test.assertSelectorHasText('.item:nth-child(1)', '0 1')
  61. test.assertSelectorHasText('.item:nth-child(2)', '1 2')
  62. test.assertSelectorHasText('.item:nth-child(3)', '2 4')
  63. })
  64. .then(function () {
  65. // make sure things work on empty array
  66. this.click('.pop')
  67. this.click('.pop')
  68. this.click('.pop')
  69. this.click('.pop')
  70. this.click('.shift')
  71. this.click('.remove')
  72. this.click('.replace')
  73. this.click('.sort')
  74. this.click('.reverse')
  75. this.click('.splice')
  76. })
  77. .then(function () {
  78. test.assertSelectorHasText('.count', '2')
  79. test.assertSelectorHasText('.item:nth-child(1)', '0 6')
  80. test.assertSelectorHasText('.item:nth-child(2)', '1 7')
  81. })
  82. .thenClick('.item:nth-child(1)', function () {
  83. test.assertSelectorHasText('.count', '1')
  84. test.assertSelectorHasText('.item:nth-child(1)', '0 7')
  85. test.assertEval(function () {
  86. return items.length === 1 && items[0].title === '7'
  87. })
  88. })
  89. .run(function () {
  90. test.done()
  91. })
  92. })