test-rfc3986.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /* global describe,it */
  2. var getSlug = require('../lib/speakingurl');
  3. describe('getSlug rfc3986', function () {
  4. 'use strict';
  5. it('"uric" characters allowed', function (done) {
  6. var chars = [';', '?', ':', '@', '&', '=', '+', ',', '/'];
  7. for (var i = 0; i < chars.length; i++) {
  8. getSlug("foo " + chars[i] + " bar baz", {
  9. uric: true
  10. })
  11. .should.eql("foo-" + chars[i] + "-bar-baz");
  12. }
  13. done();
  14. });
  15. it('"uricNoSlash" characters allowed', function (done) {
  16. var chars = [';', '?', ':', '@', '&', '=', '+', ','];
  17. for (var i = 0; i < chars.length; i++) {
  18. getSlug("foo " + chars[i] + " bar baz", {
  19. uricNoSlash: true
  20. })
  21. .should.eql("foo-" + chars[i] + "-bar-baz");
  22. }
  23. done();
  24. });
  25. it('"mark" characters allowed', function (done) {
  26. var chars = ['.', '!', '~', '*', '\'', '(', ')'];
  27. for (var i = 0; i < chars.length; i++) {
  28. getSlug("foo " + chars[i] + " bar baz", {
  29. mark: true
  30. })
  31. .should.eql("foo-" + chars[i] + "-bar-baz");
  32. }
  33. done();
  34. });
  35. it('"uric" characters allowed, separator ";"', function (done) {
  36. var chars = ['?', ':', '@', '&', '=', '+', ',', '/'];
  37. for (var i = 0; i < chars.length; i++) {
  38. getSlug("foo " + chars[i] + " bar baz", {
  39. uric: true,
  40. separator: ';'
  41. })
  42. .should.eql("foo;" + chars[i] + ";bar;baz");
  43. }
  44. done();
  45. });
  46. it('"uric" characters allowed, separator ";" included in input string', function (done) {
  47. getSlug("foo ; bar baz", {
  48. uric: true,
  49. separator: ';'
  50. })
  51. .should.eql("foo;bar;baz");
  52. done();
  53. });
  54. it('"uricNoSlash" characters allowed, separator ";"', function (done) {
  55. var chars = ['?', ':', '@', '&', '=', '+', ','];
  56. for (var i = 0; i < chars.length; i++) {
  57. getSlug("foo " + chars[i] + " bar baz", {
  58. uricNoSlash: true,
  59. separator: ';'
  60. })
  61. .should.eql("foo;" + chars[i] + ";bar;baz");
  62. }
  63. done();
  64. });
  65. it('"uricNoSlash" characters allowed, separator ";" included in input string', function (done) {
  66. getSlug("foo ; bar baz", {
  67. uric: true,
  68. separator: ';'
  69. })
  70. .should.eql("foo;bar;baz");
  71. done();
  72. });
  73. it('"mark" characters allowed, separator "."', function (done) {
  74. var chars = ['!', '~', '*', '\'', '(', ')'];
  75. for (var i = 0; i < chars.length; i++) {
  76. getSlug("foo " + chars[i] + " bar baz", {
  77. mark: true,
  78. separator: '.'
  79. })
  80. .should.eql("foo." + chars[i] + ".bar.baz");
  81. }
  82. done();
  83. });
  84. it('"mark" characters allowed, separator "." included in input string', function (done) {
  85. getSlug("foo . bar baz", {
  86. uric: true,
  87. separator: '.'
  88. })
  89. .should.eql("foo.bar.baz");
  90. done();
  91. });
  92. });