From e8cc85f733a49ca53e8cda5a96bbaacc9a20ac7e Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Thu, 17 Oct 2013 14:16:32 -0700 Subject: chore(docs): generate header ids for better linking - generate ids for all headers - collect defined anchors - check broken links (even if the page exists, but the anchor/id does not) --- docs/spec/domSpec.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 3 deletions(-) (limited to 'docs/spec/domSpec.js') diff --git a/docs/spec/domSpec.js b/docs/spec/domSpec.js index 7bc6a7f4..d10db9dc 100644 --- a/docs/spec/domSpec.js +++ b/docs/spec/domSpec.js @@ -1,4 +1,5 @@ var DOM = require('../src/dom.js').DOM; +var normalizeHeaderToId = require('../src/dom.js').normalizeHeaderToId; describe('dom', function() { var dom; @@ -7,6 +8,31 @@ describe('dom', function() { dom = new DOM(); }); + describe('html', function() { + it('should add ids to all h tags', function() { + dom.html('

Some Header

'); + expect(dom.toString()).toContain('

Some Header

'); + }); + + it('should collect anchors too', function() { + dom.html('

Xxx and bar '); + expect(dom.anchors).toContain('foo'); + expect(dom.anchors).toContain('bar'); + }) + }); + + it('should collect h tag ids', function() { + dom.h('Page Title', function() { + dom.html('

Second

xxx

Third

'); + dom.h('Another Header', function() {}); + }); + + expect(dom.anchors).toContain('page-title'); + expect(dom.anchors).toContain('second'); + expect(dom.anchors).toContain('second_third'); + expect(dom.anchors).toContain('another-header'); + }); + describe('h', function() { it('should render using function', function() { @@ -25,7 +51,7 @@ describe('dom', function() { this.html('

sub-heading

'); }); expect(dom.toString()).toContain('

heading

'); - expect(dom.toString()).toContain('

sub-heading

'); + expect(dom.toString()).toContain('

sub-heading

'); }); it('should properly number nested headings', function() { @@ -40,12 +66,45 @@ describe('dom', function() { expect(dom.toString()).toContain('

heading

'); expect(dom.toString()).toContain('

heading2

'); - expect(dom.toString()).toContain('

heading3

'); + expect(dom.toString()).toContain('

heading3

'); expect(dom.toString()).toContain('

other1

'); - expect(dom.toString()).toContain('

other2

'); + expect(dom.toString()).toContain('

other2

'); + }); + + + it('should add nested ids to all h tags', function() { + dom.h('Page Title', function() { + dom.h('Second', function() { + dom.html('some

Third

'); + }); + }); + + var resultingHtml = dom.toString(); + expect(resultingHtml).toContain('

Page Title

'); + expect(resultingHtml).toContain('

Second

'); + expect(resultingHtml).toContain('

Third

'); + }); + + }); + + + describe('normalizeHeaderToId', function() { + it('should ignore content in the parenthesis', function() { + expect(normalizeHeaderToId('One (more)')).toBe('one'); + }); + + it('should ignore html content', function() { + expect(normalizeHeaderToId('Section ')).toBe('section'); }); + it('should ignore special characters', function() { + expect(normalizeHeaderToId('Section \'!?')).toBe('section'); + }); + + it('should ignore html entities', function() { + expect(normalizeHeaderToId('angular's-jqlite')).toBe('angulars-jqlite'); + }); }); }); -- cgit v1.2.3