UNPKG

5.95 kBJavaScriptView Raw
1const marked = require("marked");
2const moment = require("moment");
3const element = require("./element");
4
5const get = {
6 content: page => page.file.body,
7 date: page => page.file.attributes.date,
8 title: page => page.file.attributes.title,
9};
10
11describe("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">&lt;h1 id=&quot;test&quot;&gt;test&lt;/h1&gt;\n&lt;p&gt;&lt;a href=&quot;http://google.com&quot;&gt;check out&lt;/a&gt;&lt;/p&gt;\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">&lt;h1 id=&quot;test&quot;&gt;test&lt;/h1&gt;\n&lt;p&gt;&lt;a href=&quot;http://demo.com/blog/demo-interview&quot;&gt;check out&lt;/a&gt;&lt;/p&gt;\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">&lt;h1 id=&quot;test&quot;&gt;test&lt;/h1&gt;\n&lt;p&gt;&lt;a href=&quot;http://demo.com/blog/demo-interview&quot;&gt;check out&lt;/a&gt;&lt;/p&gt;\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">&lt;h1 id=&quot;test&quot;&gt;test&lt;/h1&gt;\n&lt;p&gt;&lt;a href=&quot;http://demo.com/blog/demo-interview&quot;&gt;check out&lt;/a&gt;&lt;/p&gt;\n</content>' +
254 "</entry>";
255
256 expect(result).toEqual(expected);
257 });
258});