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('');
+ });
+
+ 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