UNPKG

10.3 kBJavaScriptView Raw
1'use strict';
2const lib = require('./prefixes'),
3 prefix = 'domain.com';
4
5describe('prefixes', () => {
6 describe('add', () => {
7 it('handles url prefix', () => {
8 return lib.add({
9 '/_components/foo/instances/bar': { a: 'b' }
10 }, `http://${prefix}`).toPromise(Promise).then((res) => {
11 expect(res).toEqual({
12 'domain.com/_components/foo/instances/bar': { a: 'b' }
13 });
14 });
15 });
16
17 it('adds prefix to _uris', () => {
18 return lib.add({
19 '/_uris/foo': '/_pages/bar'
20 }, prefix).toPromise(Promise).then((res) => {
21 expect(res).toEqual({
22 'domain.com/_uris/ZG9tYWluLmNvbS9mb28=': 'domain.com/_pages/bar'
23 });
24 });
25 });
26
27 it('adds prefix to root _uri', () => {
28 return lib.add({
29 '/_uris/': '/_pages/index'
30 }, prefix).toPromise(Promise).then((res) => {
31 expect(res).toEqual({
32 'domain.com/_uris/ZG9tYWluLmNvbS8=': 'domain.com/_pages/index'
33 });
34 });
35 });
36
37 it('adds prefix to key', () => {
38 return lib.add({
39 '/_components/foo/instances/bar': { a: 'b' }
40 }, prefix).toPromise(Promise).then((res) => {
41 expect(res).toEqual({
42 'domain.com/_components/foo/instances/bar': { a: 'b' }
43 });
44 });
45 });
46
47 it('adds prefix to child components', () => {
48 return lib.add({
49 '/_components/foo/instances/bar': { a: { _ref: '/_components/bar/instances/baz', c: 'd' } }
50 }, prefix).toPromise(Promise).then((res) => {
51 expect(res).toEqual({
52 'domain.com/_components/foo/instances/bar': { a: { _ref: 'domain.com/_components/bar/instances/baz', c: 'd' } }
53 });
54 });
55 });
56
57 it('adds prefix to pages', () => {
58 return lib.add({
59 '/_pages/abc': { main: ['/_components/foo/instances/bar'] }
60 }, prefix).toPromise(Promise).then((res) => {
61 expect(res).toEqual({
62 'domain.com/_pages/abc': { main: ['domain.com/_components/foo/instances/bar'] }
63 });
64 });
65 });
66
67 it('adds prefix to layouts', () => {
68 return lib.add({
69 '/_layouts/foo/instances/bar': { a: 'b' }
70 }, prefix).toPromise(Promise).then((res) => {
71 expect(res).toEqual({
72 'domain.com/_layouts/foo/instances/bar': { a: 'b' }
73 });
74 });
75 });
76
77 it('adds prefix to customUrl', () => {
78 return lib.add({
79 '/_pages/abc': { customUrl: '/' }
80 }, `http://${prefix}`).toPromise(Promise).then((res) => {
81 expect(res).toEqual({
82 'domain.com/_pages/abc': { customUrl: 'http://domain.com/' }
83 });
84 });
85 });
86
87 it('adds prefix to ssl customUrl', () => {
88 return lib.add({
89 '/_pages/abc': { customUrl: '/' }
90 }, `https://${prefix}`).toPromise(Promise).then((res) => {
91 expect(res).toEqual({
92 'domain.com/_pages/abc': { customUrl: 'https://domain.com/' }
93 });
94 });
95 });
96
97 it('does not mess up non-clay data', () => {
98 return lib.add({
99 '/_components/paragraph/instances/example': { text: 'Sanjay Srivastava <a href=\"http://pages.uoregon.edu/sanjay/bigfive.html#whatisit\" target=\"_blank\">explains on his website</a>, each' }
100 }, prefix).toPromise(Promise).then((res) => {
101 expect(res).toEqual({
102 'domain.com/_components/paragraph/instances/example': { text: 'Sanjay Srivastava <a href=\"http://pages.uoregon.edu/sanjay/bigfive.html#whatisit\" target=\"_blank\">explains on his website</a>, each' }
103 });
104 });
105 });
106 });
107
108 describe('remove', () => {
109 it('handles url prefix', () => {
110 return lib.remove({
111 'domain.com/_components/foo/instances/bar': { a: 'b' }
112 }, `http://${prefix}`).toPromise(Promise).then((res) => {
113 expect(res).toEqual({
114 '/_components/foo/instances/bar': { a: 'b' }
115 });
116 });
117 });
118
119 it('removes prefix from key', () => {
120 return lib.remove({
121 'domain.com/_components/foo/instances/bar': { a: 'b' }
122 }, prefix).toPromise(Promise).then((res) => {
123 expect(res).toEqual({
124 '/_components/foo/instances/bar': { a: 'b' }
125 });
126 });
127 });
128
129 it('removes prefix from _uris', () => {
130 return lib.remove({
131 'domain.com/_uris/ZG9tYWluLmNvbS9mb28=': 'domain.com/_pages/bar'
132 }, prefix).toPromise(Promise).then((res) => {
133 expect(res).toEqual({
134 '/_uris/foo': '/_pages/bar'
135 });
136 });
137 });
138
139 it('removes prefix from root _uri', () => {
140 return lib.remove({
141 'domain.com/_uris/ZG9tYWluLmNvbS8=': 'domain.com/_pages/index'
142 }, prefix).toPromise(Promise).then((res) => {
143 expect(res).toEqual({
144 '/_uris/': '/_pages/index'
145 });
146 });
147 });
148
149 it('removes prefix from child components', () => {
150 return lib.remove({
151 'domain.com/_components/foo/instances/bar': { a: { _ref: 'domain.com/_components/bar/instances/baz', c: 'd' } }
152 }, prefix).toPromise(Promise).then((res) => {
153 expect(res).toEqual({
154 '/_components/foo/instances/bar': { a: { _ref: '/_components/bar/instances/baz', c: 'd' } }
155 });
156 });
157 });
158
159 it('removes prefix from pages', () => {
160 return lib.remove({
161 'domain.com/_pages/abc': { main: ['domain.com/_components/foo/instances/bar'] }
162 }, prefix).toPromise(Promise).then((res) => {
163 expect(res).toEqual({
164 '/_pages/abc': { main: ['/_components/foo/instances/bar'] }
165 });
166 });
167 });
168
169 it('removes prefix from layouts', () => {
170 return lib.remove({
171 'domain.com/_layouts/foo/instances/bar': { a: 'b' }
172 }, prefix).toPromise(Promise).then((res) => {
173 expect(res).toEqual({
174 '/_layouts/foo/instances/bar': { a: 'b' }
175 });
176 });
177 });
178
179 it('removes prefix from customUrl', () => {
180 return lib.remove({
181 'domain.com/_pages/abc': { customUrl: 'http://domain.com/' }
182 }, `http://${prefix}`).toPromise(Promise).then((res) => {
183 expect(res).toEqual({
184 '/_pages/abc': { customUrl: '/' }
185 });
186 });
187 });
188
189 it('removes prefix from ssl customUrl', () => {
190 return lib.remove({
191 'domain.com/_pages/abc': { customUrl: 'https://domain.com/' }
192 }, `https://${prefix}`).toPromise(Promise).then((res) => {
193 expect(res).toEqual({
194 '/_pages/abc': { customUrl: '/' }
195 });
196 });
197 });
198
199 it('does not mess up non-clay data', () => {
200 return lib.remove({
201 'domain.com/_components/paragraph/instances/example': { text: 'Sanjay Srivastava <a href=\"http://pages.uoregon.edu/sanjay/bigfive.html#whatisit\" target=\"_blank\">explains on his website</a>, each' }
202 }, prefix).toPromise(Promise).then((res) => {
203 expect(res).toEqual({
204 '/_components/paragraph/instances/example': { text: 'Sanjay Srivastava <a href=\"http://pages.uoregon.edu/sanjay/bigfive.html#whatisit\" target=\"_blank\">explains on his website</a>, each' }
205 });
206 });
207 });
208 });
209
210 describe('getFromUrl', () => {
211 it('throws error when not given an api route', () => {
212 expect(() => lib.getFromUrl('domain.com/foo')).toThrow('Unable to find site prefix for domain.com/foo');
213 });
214
215 it('gets prefix for components', () => {
216 expect(lib.getFromUrl('domain.com/_components/foo')).toBe('domain.com');
217 expect(lib.getFromUrl('domain.com/somepath/_components/foo')).toBe('domain.com/somepath');
218 });
219
220 it('gets prefix for pages', () => {
221 expect(lib.getFromUrl('domain.com/_pages/foo')).toBe('domain.com');
222 expect(lib.getFromUrl('domain.com/somepath/_pages/foo')).toBe('domain.com/somepath');
223 });
224
225 it('gets prefix for layouts', () => {
226 expect(lib.getFromUrl('domain.com/_layouts/foo')).toBe('domain.com');
227 expect(lib.getFromUrl('domain.com/somepath/_layouts/foo')).toBe('domain.com/somepath');
228 });
229
230 it('gets prefix for users', () => {
231 expect(lib.getFromUrl('domain.com/_users/foo')).toBe('domain.com');
232 expect(lib.getFromUrl('domain.com/somepath/_users/foo')).toBe('domain.com/somepath');
233 });
234
235 it('gets prefix for uris', () => {
236 expect(lib.getFromUrl('domain.com/_uris/foo')).toBe('domain.com');
237 expect(lib.getFromUrl('domain.com/somepath/_uris/foo')).toBe('domain.com/somepath');
238 });
239
240 it('gets prefix for lists', () => {
241 expect(lib.getFromUrl('domain.com/_lists/foo')).toBe('domain.com');
242 expect(lib.getFromUrl('domain.com/somepath/_lists/foo')).toBe('domain.com/somepath');
243 });
244 });
245
246 describe('uriToUrl', () => {
247 it('converts component uri', () => {
248 expect(lib.uriToUrl('http://domain.com', 'domain.com/_components/foo/instances/bar')).toBe('http://domain.com/_components/foo/instances/bar');
249 });
250
251 it('converts page uri', () => {
252 expect(lib.uriToUrl('http://domain.com', 'domain.com/_pages/foo')).toBe('http://domain.com/_pages/foo');
253 });
254
255 it('converts layout uri', () => {
256 expect(lib.uriToUrl('http://domain.com', 'domain.com/_layouts/foo/instances/bar')).toBe('http://domain.com/_layouts/foo/instances/bar');
257 });
258 });
259
260 describe('urlToUri', () => {
261 it('converts component uri', () => {
262 expect(lib.urlToUri('http://domain.com/_components/foo/instances/bar')).toBe('domain.com/_components/foo/instances/bar');
263 });
264
265 it('converts page uri', () => {
266 expect(lib.urlToUri('http://domain.com/_pages/foo/instances/bar')).toBe('domain.com/_pages/foo/instances/bar');
267 });
268
269 it('converts layout uri', () => {
270 expect(lib.urlToUri('http://domain.com/_layouts/foo/instances/bar')).toBe('domain.com/_layouts/foo/instances/bar');
271 });
272
273 it('converts bare domain', () => {
274 expect(lib.urlToUri('http://domain.com')).toBe('domain.com');
275 });
276
277 it('removes extensions from path', () => {
278 expect(lib.urlToUri('http://domain.com/_components/foo.json')).toBe('domain.com/_components/foo');
279 });
280 });
281
282 describe('getExt', () => {
283 it('returns null if no prefix', () => {
284 expect(lib.getExt('http://domain.com/_components/foo')).toBe(null);
285 });
286
287 it('returns extension', () => {
288 expect(lib.getExt('http://domain.com/_components/foo.html')).toBe('.html');
289 });
290 });
291});