array-filters.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. casper.test.begin('Array Filters', 55, function (test) {
  2. var names = ['Adam', 'John', 'Julie', 'Juliette', 'Mary', 'Mike'],
  3. namesReversed = names.slice().reverse(),
  4. numbers = ['555-1276', '555-4321', '555-5678', '555-5678', '555-8765', '800-BIG-MARY'],
  5. numbersReversed = numbers.slice().reverse(),
  6. julie = ['Juliette', 'Julie'],
  7. julieRevesed = julie.slice().reverse()
  8. casper
  9. .start('./fixtures/array-filters.html')
  10. .then(function () {
  11. // count
  12. test.assertElementCount('#t1 .item', 6)
  13. test.assertElementCount('#t2 .item', 6)
  14. test.assertElementCount('#t3 .item', 2)
  15. assertOrder(names, 1)
  16. assertOrder(namesReversed, 2)
  17. assertOrder(julie, 3)
  18. })
  19. // reverse
  20. .thenClick('#reverse', function () {
  21. assertOrder(namesReversed, 1)
  22. assertOrder(names, 2)
  23. })
  24. // change sort key
  25. .thenEvaluate(function () {
  26. var dropdown = document.getElementById('sortby')
  27. dropdown.selectedIndex = 1
  28. var e = document.createEvent('HTMLEvents')
  29. e.initEvent('change', true, true)
  30. dropdown.dispatchEvent(e)
  31. })
  32. .then(function () {
  33. assertOrder(numbersReversed, 1)
  34. assertOrder(numbers, 2)
  35. assertOrder(julieRevesed, 3)
  36. })
  37. // enter search filter
  38. .then(function () {
  39. this.sendKeys('#search', 'julie')
  40. })
  41. .then(function () {
  42. test.assertElementCount('#t1 .item', 2)
  43. test.assertElementCount('#t2 .item', 2)
  44. test.assertElementCount('#t3 .item', 2)
  45. assertOrder(julieRevesed, 1)
  46. assertOrder(julie, 2)
  47. })
  48. // enter search filter for numbers
  49. .then(function () {
  50. this.sendKeys('#search', '555', { reset: true })
  51. })
  52. .then(function () {
  53. test.assertElementCount('#t1 .item', 0)
  54. test.assertElementCount('#t2 .item', 5)
  55. })
  56. // enter search filter for nested properties
  57. .then(function () {
  58. this.sendKeys('#search', 'hidden', { reset: true })
  59. })
  60. .then(function () {
  61. test.assertElementCount('#t1 .item', 0)
  62. test.assertElementCount('#t2 .item', 1)
  63. })
  64. // change filterkey
  65. .thenEvaluate(function () {
  66. var dropdown = document.getElementById('filterby')
  67. dropdown.selectedIndex = 1
  68. var e = document.createEvent('HTMLEvents')
  69. e.initEvent('change', true, true)
  70. dropdown.dispatchEvent(e)
  71. })
  72. .then(function () {
  73. test.assertElementCount('#t3 .item', 0)
  74. })
  75. .run(function () {
  76. test.done()
  77. })
  78. function assertOrder (list, id) {
  79. list.forEach(function (n, i) {
  80. test.assertSelectorHasText('#t' + id + ' .item:nth-child('+ (i+2) + ')', n)
  81. })
  82. }
  83. })