-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathreference-to-html.test.ts
More file actions
179 lines (150 loc) · 7.53 KB
/
reference-to-html.test.ts
File metadata and controls
179 lines (150 loc) · 7.53 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import { referenceToHTML } from '../src/helper/enumerate-entries'
import { findEmbeddedItems } from '../src/helper/find-embeded-object'
import { Metadata } from '../src/Models/metadata-model'
import Node from '../src/nodes/node'
import NodeType from '../src/nodes/node-type'
import { Next, RenderOption } from '../src/options'
import { defaultNodeOption } from '../src/options/default-node-options'
import { defaultOptions } from '../src/options/default-options'
import { assetReferenceJson, embeddedAssetJsonEntry, embeddedEntryJsonEntry, entryReferenceBlockJson, entryReferenceInlineJson, entryReferenceLinkJson } from './mock/json-element-mock'
import { embeddedAssetWithRenderOption, embeddedObjectDefaultRender, embeddedObjectWithRenderOption } from './mock/render-options'
describe('Reference Node To HTML', () => {
it('Should return blank for undefined entry', done => {
const node = assetReferenceJson.children[0] as unknown as Node
const renderOption = {}
const resultHTML = referenceToHTML(node, renderOption)
expect(resultHTML).toEqual('')
done()
})
it('Should return blank for no children', done => {
const node = {
"uid": "node_uid_1",
"type": NodeType.REFERENCE,
"attrs": {
"display-type": "display",
"asset-uid": "asset_uid_1",
"content-type-uid": "sys_assets",
"asset-link": "https://image.url/11.jpg",
"asset-name": "11.jpg",
"asset-type": "image/jpeg",
"type": "asset",
"class-name": "embedded-asset",
"width": 25.16914749661705,
"className": "classname",
"id": "img_id"
}
}
const renderOption = {}
const resultHTML = referenceToHTML(node as unknown as Node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedAssetJsonEntry)[0]
})
expect(resultHTML).toEqual('<img src="/asset_uid_1/dummy.pdf" alt="dummy.pdf" />')
done()
})
it('Should return HTML for embedded asset', done => {
const node = assetReferenceJson.children[0] as unknown as Node
const renderOption = {}
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedAssetJsonEntry)[0]
})
expect(resultHTML).toEqual('<img src="/asset_uid_1/dummy.pdf" alt="dummy.pdf" />')
done()
})
it('Should return HTML for embedded block entry', done => {
const node = entryReferenceBlockJson.children[0] as unknown as Node
const renderOption = {}
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual('<div><p>Update this title</p><p>Content type: <span>content_block</span></p></div>')
done()
})
it('Should return HTML for embedded link entry', done => {
const node = entryReferenceLinkJson.children[0] as unknown as Node
const renderOption = {}
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual('<a class=\"embedded-entry\" href=\"/copy-of-entry-final-02\" target=\"_self\">/copy-of-entry-final-02</a>')
done()
})
it('Should return HTML for embedded inline entry', done => {
const node = entryReferenceInlineJson.children[0] as unknown as Node
const renderOption = {}
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual('<span>updated title</span>')
done()
})
// Custom render option
it('Should return custom HTML for embedded asset', done => {
const node = assetReferenceJson.children[0] as unknown as Node
const renderOption = embeddedAssetWithRenderOption.renderOption as RenderOption
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedAssetJsonEntry)[0]
})
expect(resultHTML).toEqual('<img src="/asset_uid_1/dummy.pdf" alt="Alternet Text" />')
done()
})
it('Should return custom HTML for embedded block entry', done => {
const node = entryReferenceBlockJson.children[0] as unknown as Node
const renderOption = embeddedObjectWithRenderOption.renderOption as RenderOption
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual('<div><div>Update this title</div></div>')
done()
})
it('Should return custom HTML for embedded inline entry', done => {
const node = entryReferenceInlineJson.children[0] as unknown as Node
const renderOption = embeddedObjectWithRenderOption.renderOption as RenderOption
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual('<div><div>titleUpdateUID</div></div>')
done()
})
it('Should return custom default HTML for embedded inline entry', done => {
const node = entryReferenceBlockJson.children[0] as unknown as Node
const renderOption = embeddedObjectDefaultRender.renderOption as RenderOption
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
})
expect(resultHTML).toEqual(`<div>
<div>Update this title</div>
<div><span>entry_uid_16</span>
</div>`)
done()
})
it('Should return image for undefined node asset', done => {
const node = assetReferenceJson.children[0] as unknown as Node
const renderOption = {
'reference' : (node: Node, next: Next) => {
return `<img src=${node.attrs['asset-link']}>`;
}
}
const resultHTML = referenceToHTML(node, renderOption)
expect(resultHTML).toEqual('<img src=https://image.url/11.jpg>')
done()
})
it('Should return image for undefined node asset from default node option', done => {
const node = assetReferenceJson.children[0] as unknown as Node
const resultHTML = referenceToHTML(node, defaultNodeOption)
expect(resultHTML).toEqual('<figure><img asset_uid=\"asset_uid_1\" class=\"embedded-asset\" src=\"https://image.url/11.jpg\" /></figure>')
done()
})
it('Should return HTML for embedded link entry', done => {
const node = entryReferenceLinkJson.children[0] as unknown as Node
const renderOption = {
'reference' : (node: Node, next: Next) => {
return `<a href=\"${node.attrs['entry-uid']}\">${node.attrs.href}</a>`;
}
}
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
return findEmbeddedItems(metadata, { uid: 'uid' })[0]
})
expect(resultHTML).toEqual('<a href=\"entry_uid_20\">/copy-of-entry-final-02</a>')
done()
})
})