filters.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. describe('Filters', function () {
  2. var filters = require('vue/src/filters')
  3. describe('capitalize', function () {
  4. var filter = filters.capitalize
  5. it('should capitalize a string', function () {
  6. var res = filter('fsefsfsef')
  7. assert.strictEqual(res.charAt(0), 'F')
  8. assert.strictEqual(res.slice(1), 'sefsfsef')
  9. })
  10. assertNumberAndFalsy(filter)
  11. })
  12. describe('uppercase', function () {
  13. var filter = filters.uppercase
  14. it('should uppercase a string', function () {
  15. var res = filter('fsefef')
  16. assert.strictEqual(res, 'FSEFEF')
  17. })
  18. assertNumberAndFalsy(filter)
  19. })
  20. describe('lowercase', function () {
  21. var filter = filters.lowercase
  22. it('should lowercase a string', function () {
  23. var res = filter('AweSoMe')
  24. assert.strictEqual(res, 'awesome')
  25. })
  26. assertNumberAndFalsy(filter)
  27. })
  28. describe('pluralize', function () {
  29. var filter = filters.pluralize
  30. it('should simply add "s" if arg length is 1', function () {
  31. var args = ['item'],
  32. res0 = filter(0, args),
  33. res1 = filter(1, args),
  34. res2 = filter(2, args)
  35. assert.strictEqual(res0, 'items')
  36. assert.strictEqual(res1, 'item')
  37. assert.strictEqual(res2, 'items')
  38. })
  39. it('should use corresponding format when arg length is greater than 1', function () {
  40. var args = ['st', 'nd', 'rd'],
  41. res0 = filter(0, args),
  42. res1 = filter(1, args),
  43. res2 = filter(2, args),
  44. res3 = filter(3, args)
  45. assert.strictEqual(res0, 'rd')
  46. assert.strictEqual(res1, 'st')
  47. assert.strictEqual(res2, 'nd')
  48. assert.strictEqual(res3, 'rd')
  49. })
  50. })
  51. describe('currency', function () {
  52. var filter = filters.currency
  53. it('should format a number correctly', function () {
  54. var res1 = filter(1234),
  55. res2 = filter(1234.45),
  56. res3 = filter(123443434.4343434)
  57. assert.strictEqual(res1, '$1,234.00')
  58. assert.strictEqual(res2, '$1,234.45')
  59. assert.strictEqual(res3, '$123,443,434.43')
  60. })
  61. it('should use the arg for the currency sign', function () {
  62. var res = filter(2134, '@')
  63. assert.strictEqual(res, '@2,134.00')
  64. })
  65. it('should return empty string on falsy values except 0', function () {
  66. var res1 = filter(false),
  67. res2 = filter(null),
  68. res3 = filter(undefined),
  69. res4 = filter(0)
  70. assert.strictEqual(res1, '')
  71. assert.strictEqual(res2, '')
  72. assert.strictEqual(res3, '')
  73. assert.strictEqual(res4, '$0.00')
  74. })
  75. })
  76. describe('key', function () {
  77. var filter = filters.key
  78. it('should return a function that only triggers when key matches', function () {
  79. var args = ['enter'],
  80. triggered = false,
  81. handler = filter(function () {
  82. triggered = true
  83. }, args)
  84. handler({ keyCode: 0 })
  85. assert.notOk(triggered)
  86. handler({ keyCode: 13 })
  87. assert.ok(triggered)
  88. })
  89. it('should also work for direct keyCode', function () {
  90. var args = [13],
  91. triggered = false,
  92. handler = filter(function () {
  93. triggered = true
  94. }, args)
  95. handler({ keyCode: 0 })
  96. assert.notOk(triggered)
  97. handler({ keyCode: 13 })
  98. assert.ok(triggered)
  99. })
  100. })
  101. })
  102. function assertNumberAndFalsy (filter) {
  103. it('should return a stringified number', function () {
  104. var res = filter(12345)
  105. assert.strictEqual(res, '12345')
  106. })
  107. it('should return empty string on falsy values except 0', function () {
  108. var res1 = filter(false),
  109. res2 = filter(null),
  110. res3 = filter(undefined),
  111. res4 = filter(0)
  112. assert.strictEqual(res1, '')
  113. assert.strictEqual(res2, '')
  114. assert.strictEqual(res3, '')
  115. assert.strictEqual(res4, '0')
  116. })
  117. }