summaryrefslogtreecommitdiffstats
path: root/lib/output/modifiers/__tests__/annotateText.js
blob: 67e7a10670c9fe735e1effd6c286589faba06b95 (plain)
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);
    });
});