1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
var Immutable = require('immutable');
var cheerio = require('cheerio');
var GlossaryEntry = require('../../../models/glossaryEntry');
var annotateText = require('../annotateText');
describe('annotateText', function() {
var entries = Immutable.List([
GlossaryEntry({ name: 'Word' }),
GlossaryEntry({ name: 'Multiple Words' })
]);
it('should annotate text', function() {
var $ = cheerio.load('<p>This is a word, and multiple words</p>');
annotateText(entries, 'GLOSSARY.md', $);
var links = $('a');
expect(links.length).toBe(2);
var word = $(links.get(0));
expect(word.attr('href')).toBe('/GLOSSARY.md#word');
expect(word.text()).toBe('word');
expect(word.hasClass('glossary-term')).toBeTruthy();
var words = $(links.get(1));
expect(words.attr('href')).toBe('/GLOSSARY.md#multiple-words');
expect(words.text()).toBe('multiple words');
expect(words.hasClass('glossary-term')).toBeTruthy();
});
it('should not annotate scripts', function() {
var $ = cheerio.load('<script>This is a word, and multiple words</script>');
annotateText(entries, 'GLOSSARY.md', $);
expect($('a').length).toBe(0);
});
it('should not annotate when has class "no-glossary"', function() {
var $ = cheerio.load('<p class="no-glossary">This is a word, and multiple words</p>');
annotateText(entries, 'GLOSSARY.md', $);
expect($('a').length).toBe(0);
});
});
|