2
0

marked-spec.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var marked = require('../../lib/marked.js');
  2. describe('Test heading ID functionality', () => {
  3. it('should add id attribute by default', () => {
  4. var renderer = new marked.Renderer();
  5. var slugger = new marked.Slugger();
  6. var header = renderer.heading('test', 1, 'test', slugger);
  7. expect(header).toBe('<h1 id="test">test</h1>\n');
  8. });
  9. it('should NOT add id attribute when options set false', () => {
  10. var renderer = new marked.Renderer({ headerIds: false });
  11. var header = renderer.heading('test', 1, 'test');
  12. expect(header).toBe('<h1>test</h1>\n');
  13. });
  14. });
  15. describe('Test slugger functionality', () => {
  16. it('should use lowercase slug', () => {
  17. var slugger = new marked.Slugger();
  18. expect(slugger.slug('Test')).toBe('test');
  19. });
  20. it('should be unique to avoid collisions 1280', () => {
  21. var slugger = new marked.Slugger();
  22. expect(slugger.slug('test')).toBe('test');
  23. expect(slugger.slug('test')).toBe('test-1');
  24. expect(slugger.slug('test')).toBe('test-2');
  25. });
  26. it('should be unique when slug ends with number', () => {
  27. var slugger = new marked.Slugger();
  28. expect(slugger.slug('test 1')).toBe('test-1');
  29. expect(slugger.slug('test')).toBe('test');
  30. expect(slugger.slug('test')).toBe('test-2');
  31. });
  32. it('should be unique when slug ends with hyphen number', () => {
  33. var slugger = new marked.Slugger();
  34. expect(slugger.slug('foo')).toBe('foo');
  35. expect(slugger.slug('foo')).toBe('foo-1');
  36. expect(slugger.slug('foo 1')).toBe('foo-1-1');
  37. expect(slugger.slug('foo-1')).toBe('foo-1-2');
  38. expect(slugger.slug('foo')).toBe('foo-2');
  39. });
  40. it('should allow non-latin chars', () => {
  41. var slugger = new marked.Slugger();
  42. expect(slugger.slug('привет')).toBe('привет');
  43. });
  44. it('should remove ampersands 857', () => {
  45. var slugger = new marked.Slugger();
  46. expect(slugger.slug('This & That Section')).toBe('this--that-section');
  47. });
  48. it('should remove periods', () => {
  49. var slugger = new marked.Slugger();
  50. expect(slugger.slug('file.txt')).toBe('filetxt');
  51. });
  52. });
  53. describe('Test paragraph token type', () => {
  54. it('should use the "paragraph" type on top level', () => {
  55. const md = 'A Paragraph.\n\n> A blockquote\n\n- list item\n';
  56. const tokens = marked.lexer(md);
  57. expect(tokens[0].type).toBe('paragraph');
  58. expect(tokens[3].type).toBe('paragraph');
  59. expect(tokens[7].type).toBe('text');
  60. });
  61. });