1 | const marked = require("marked");
|
2 | const moment = require("moment");
|
3 | const element = require("./element");
|
4 |
|
5 | const get = {
|
6 | content: page => page.file.body,
|
7 | date: page => page.file.attributes.date,
|
8 | title: page => page.file.attributes.title,
|
9 | };
|
10 |
|
11 | describe("Element", () => {
|
12 | it("entries generate xml", () => {
|
13 | const baseUrl = "http://demo.com/";
|
14 | const sections = ["demoSection"];
|
15 | const title = "demo title";
|
16 | const date = moment("2016-02-21", "YYYY-MM-DD")
|
17 | .utcOffset(0)
|
18 | .format();
|
19 | const body = "demo";
|
20 | const pages = {
|
21 | demo: {
|
22 | type: "page",
|
23 | sectionName: "demoSection",
|
24 | file: {
|
25 | attributes: {
|
26 | date,
|
27 | title,
|
28 | },
|
29 | body,
|
30 | },
|
31 | },
|
32 | };
|
33 |
|
34 | const result = element.entries({
|
35 | baseUrl,
|
36 | sections,
|
37 | pages,
|
38 | get,
|
39 | });
|
40 |
|
41 | const expected =
|
42 | "<entry>" +
|
43 | "<title>" +
|
44 | title +
|
45 | "</title>" +
|
46 | "<id>ademotitle" +
|
47 | date.toLowerCase() +
|
48 | "</id>" +
|
49 | '<link href="' +
|
50 | baseUrl +
|
51 | 'demo"></link>' +
|
52 | "<updated>" +
|
53 | date +
|
54 | "</updated>" +
|
55 | '<content type="html">' +
|
56 | body +
|
57 | "</content>" +
|
58 | "</entry>";
|
59 |
|
60 | expect(result).toEqual(expected);
|
61 | });
|
62 |
|
63 | it("do not resolve full urls", () => {
|
64 | const baseUrl = "http://demo.com/";
|
65 | const sections = ["demoSection"];
|
66 | const title = "demo title";
|
67 | const date = moment("2016-02-21", "YYYY-MM-DD")
|
68 | .utcOffset(0)
|
69 | .format();
|
70 | const body = marked("#test\n[check out](http://google.com)");
|
71 | const pages = {
|
72 | demo: {
|
73 | type: "page",
|
74 | sectionName: "demoSection",
|
75 | file: {
|
76 | attributes: {
|
77 | date,
|
78 | title,
|
79 | },
|
80 | body,
|
81 | },
|
82 | },
|
83 | };
|
84 |
|
85 | const result = element.entries({
|
86 | baseUrl,
|
87 | sections,
|
88 | pages,
|
89 | get,
|
90 | });
|
91 |
|
92 | const expected =
|
93 | "<entry>" +
|
94 | "<title>" +
|
95 | title +
|
96 | "</title>" +
|
97 | "<id>ademotitle" +
|
98 | date.toLowerCase() +
|
99 | "</id>" +
|
100 | '<link href="' +
|
101 | baseUrl +
|
102 | 'demo"></link>' +
|
103 | "<updated>" +
|
104 | date +
|
105 | "</updated>" +
|
106 | '<content type="html"><h1 id="test">test</h1>\n<p><a href="http://google.com">check out</a></p>\n</content>' +
|
107 | "</entry>";
|
108 |
|
109 | expect(result).toEqual(expected);
|
110 | });
|
111 |
|
112 | it("entries resolve relative urls against base", () => {
|
113 | const baseUrl = "http://demo.com/";
|
114 | const sections = ["demoSection"];
|
115 | const title = "demo title";
|
116 | const date = moment("2016-02-21", "YYYY-MM-DD")
|
117 | .utcOffset(0)
|
118 | .format();
|
119 | const body = marked("#test\n[check out](../blog/demo-interview)");
|
120 | const pages = {
|
121 | demo: {
|
122 | type: "page",
|
123 | sectionName: "demoSection",
|
124 | file: {
|
125 | attributes: {
|
126 | date,
|
127 | title,
|
128 | },
|
129 | body,
|
130 | },
|
131 | },
|
132 | };
|
133 |
|
134 | const result = element.entries({
|
135 | baseUrl,
|
136 | sections,
|
137 | pages,
|
138 | get,
|
139 | });
|
140 |
|
141 | const expected =
|
142 | "<entry>" +
|
143 | "<title>" +
|
144 | title +
|
145 | "</title>" +
|
146 | "<id>ademotitle" +
|
147 | date.toLowerCase() +
|
148 | "</id>" +
|
149 | '<link href="' +
|
150 | baseUrl +
|
151 | 'demo"></link>' +
|
152 | "<updated>" +
|
153 | date +
|
154 | "</updated>" +
|
155 | '<content type="html"><h1 id="test">test</h1>\n<p><a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' +
|
156 | "</entry>";
|
157 |
|
158 | expect(result).toEqual(expected);
|
159 | });
|
160 |
|
161 | it("entries resolve absolute urls against base", () => {
|
162 | const baseUrl = "http://demo.com/";
|
163 | const sections = ["demoSection"];
|
164 | const title = "demo title";
|
165 | const date = moment("2016-02-21", "YYYY-MM-DD")
|
166 | .utcOffset(0)
|
167 | .format();
|
168 | const body = marked("#test\n[check out](/blog/demo-interview)");
|
169 | const pages = {
|
170 | demo: {
|
171 | type: "page",
|
172 | sectionName: "demoSection",
|
173 | file: {
|
174 | attributes: {
|
175 | date,
|
176 | title,
|
177 | },
|
178 | body,
|
179 | },
|
180 | },
|
181 | };
|
182 |
|
183 | const result = element.entries({
|
184 | baseUrl,
|
185 | sections,
|
186 | pages,
|
187 | get,
|
188 | });
|
189 |
|
190 | const expected =
|
191 | "<entry>" +
|
192 | "<title>" +
|
193 | title +
|
194 | "</title>" +
|
195 | "<id>ademotitle" +
|
196 | date.toLowerCase() +
|
197 | "</id>" +
|
198 | '<link href="' +
|
199 | baseUrl +
|
200 | 'demo"></link>' +
|
201 | "<updated>" +
|
202 | date +
|
203 | "</updated>" +
|
204 | '<content type="html"><h1 id="test">test</h1>\n<p><a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' +
|
205 | "</entry>";
|
206 |
|
207 | expect(result).toEqual(expected);
|
208 | });
|
209 |
|
210 | it("entries resolve relative urls against base", () => {
|
211 | const baseUrl = "http://demo.com/";
|
212 | const sections = ["blog"];
|
213 | const title = "demo title";
|
214 | const date = moment("2016-02-21", "YYYY-MM-DD")
|
215 | .utcOffset(0)
|
216 | .format();
|
217 | const body = marked("#test\n[check out](./demo-interview)");
|
218 | const pages = {
|
219 | demo: {
|
220 | type: "page",
|
221 | sectionName: "blog",
|
222 | file: {
|
223 | attributes: {
|
224 | date,
|
225 | title,
|
226 | },
|
227 | body,
|
228 | },
|
229 | },
|
230 | };
|
231 |
|
232 | const result = element.entries({
|
233 | baseUrl,
|
234 | sections,
|
235 | pages,
|
236 | get,
|
237 | });
|
238 |
|
239 | const expected =
|
240 | "<entry>" +
|
241 | "<title>" +
|
242 | title +
|
243 | "</title>" +
|
244 | "<id>ademotitle" +
|
245 | date.toLowerCase() +
|
246 | "</id>" +
|
247 | '<link href="' +
|
248 | baseUrl +
|
249 | 'demo"></link>' +
|
250 | "<updated>" +
|
251 | date +
|
252 | "</updated>" +
|
253 | '<content type="html"><h1 id="test">test</h1>\n<p><a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' +
|
254 | "</entry>";
|
255 |
|
256 | expect(result).toEqual(expected);
|
257 | });
|
258 | });
|