1
1
'use es6' ;
2
2
3
- import { elements } from '../src/constants'
3
+ import { elements } from '../src/constants' ;
4
4
import documents from './fixtures/documents' ;
5
5
import docsSoap from '../src/index' ;
6
6
import expect from 'expect' ;
@@ -10,6 +10,13 @@ import parseHTML from '../src/parseHTML';
10
10
describe ( 'Google Docs Converter' , ( ) => {
11
11
jsdom ( ) ;
12
12
13
+ it ( 'converts plain doc' , ( ) => {
14
+ const doc = docsSoap ( documents . plain ) ;
15
+ expect ( doc ) . toExist ( ) ;
16
+ const parsed = parseHTML ( doc ) ;
17
+ expect ( parsed . textContent ) . toBe ( 'Hello world.' ) ;
18
+ } ) ;
19
+
13
20
it ( 'converts inline styles from google docs properly' , ( ) => {
14
21
const rawContents = parseHTML ( documents . inlineStyles ) ;
15
22
expect ( rawContents . querySelectorAll ( elements . BOLD ) . length ) . toBe ( 0 ) ;
@@ -37,4 +44,58 @@ describe('Google Docs Converter', () => {
37
44
expect ( doc . querySelectorAll ( elements . ITALIC ) . length ) . toBe ( 2 ) ;
38
45
expect ( doc . querySelectorAll ( elements . ANCHOR ) . length ) . toBe ( 4 ) ;
39
46
} ) ;
47
+
48
+ it ( 'converts nested list from google docs properly' , ( ) => {
49
+ const doc = parseHTML ( docsSoap ( documents . nestedList ) ) ;
50
+ // ol
51
+ // - li
52
+ // - ol
53
+ // - li
54
+ // - ol
55
+ // - li
56
+ // - li
57
+ // - ol
58
+ // ....
59
+ // ul
60
+ // - li
61
+ // - li
62
+ // - ul
63
+ // - li
64
+ // - ul
65
+ // - li
66
+ expect ( doc . childNodes [ 0 ] . nodeName ) . toBe ( 'OL' ) ;
67
+ expect ( doc . childNodes [ 0 ] . childNodes . length ) . toBe ( 4 ) ;
68
+ expect ( doc . childNodes [ 0 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
69
+ // jsdom bug: should actually include a line break
70
+ expect ( doc . childNodes [ 0 ] . childNodes [ 0 ] . textContent ) . toBe ( 'Abcd1234' ) ;
71
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . nodeName ) . toBe ( 'OL' ) ;
72
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes . length ) . toBe ( 2 ) ;
73
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
74
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . nodeName ) . toBe ( 'OL' ) ;
75
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes . length ) . toBe ( 1 ) ;
76
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
77
+ expect ( doc . childNodes [ 0 ] . childNodes [ 2 ] . nodeName ) . toBe ( 'LI' ) ;
78
+ expect ( doc . childNodes [ 0 ] . childNodes [ 2 ] . childNodes . length ) . toBe ( 1 ) ;
79
+ expect ( doc . childNodes [ 0 ] . childNodes [ 3 ] . nodeName ) . toBe ( 'OL' ) ;
80
+
81
+ expect ( doc . childNodes [ 1 ] . nodeName ) . toBe ( 'UL' ) ;
82
+ expect ( doc . childNodes [ 1 ] . childNodes . length ) . toBe ( 3 ) ;
83
+ expect ( doc . childNodes [ 1 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
84
+ expect ( doc . childNodes [ 1 ] . childNodes [ 1 ] . nodeName ) . toBe ( 'LI' ) ;
85
+ expect ( doc . childNodes [ 1 ] . childNodes [ 2 ] . nodeName ) . toBe ( 'UL' ) ;
86
+ expect ( doc . childNodes [ 1 ] . childNodes [ 2 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
87
+ expect ( doc . childNodes [ 1 ] . childNodes [ 2 ] . childNodes [ 1 ] . nodeName ) . toBe ( 'UL' ) ;
88
+ expect ( doc . childNodes [ 1 ] . childNodes [ 2 ] . childNodes [ 1 ] . childNodes [ 0 ] . nodeName ) . toBe ( 'LI' ) ;
89
+ expect ( doc . childNodes [ 1 ] . childNodes [ 2 ] . childNodes [ 1 ] . childNodes [ 0 ] . childNodes . length ) . toBe ( 1 ) ;
90
+ } ) ;
91
+
92
+ it ( 'converts deep nested styles from gdocs properly' , ( ) => {
93
+ const doc = parseHTML ( docsSoap ( documents . nestedList ) ) ;
94
+ expect ( doc . childNodes [ 0 ] . childNodes [ 0 ] . querySelectorAll ( elements . BOLD ) . length ) . toBe ( 3 ) ;
95
+ expect ( doc . childNodes [ 0 ] . childNodes [ 0 ] . querySelectorAll ( elements . UNDERLINE ) . length ) . toBe ( 3 ) ;
96
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes [ 0 ] . querySelectorAll ( elements . ITALIC ) . length ) . toBe ( 1 ) ;
97
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes [ 0 ] . querySelector ( elements . ITALIC ) . textContent ) . toBe ( 'italics' ) ;
98
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes [ 0 ] . querySelectorAll ( elements . UNDERLINE ) . length ) . toBe ( 1 ) ;
99
+ expect ( doc . childNodes [ 0 ] . childNodes [ 1 ] . childNodes [ 1 ] . childNodes [ 0 ] . querySelector ( elements . UNDERLINE ) . textContent ) . toBe ( 'underline' ) ;
100
+ } ) ;
40
101
} ) ;
0 commit comments