-
Notifications
You must be signed in to change notification settings - Fork 279
/
Copy pathutils.test.ts
133 lines (116 loc) · 3.69 KB
/
utils.test.ts
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
/* eslint-disable no-unused-expressions */
import { expect } from 'chai';
import { SiteInfo } from './middleware';
import { getPublicUrl, getJssEditingSecret, resolvePointOfSale } from './utils';
describe('utils', () => {
describe('getPublicUrl', () => {
after(() => {
delete process.env.PUBLIC_URL;
delete process.env.VERCEL_URL;
});
it('should fallback to localhost:3000 if not defined', () => {
const result = getPublicUrl();
expect(result).to.equal('http://localhost:3000');
});
it('should return env variable', () => {
const publicUrl = 'http://test.com';
process.env.PUBLIC_URL = publicUrl;
const result = getPublicUrl();
expect(result).to.equal(publicUrl);
});
it('should remove trailing slash', () => {
const publicUrl = 'http://test.com/foo/';
process.env.PUBLIC_URL = publicUrl;
const result = getPublicUrl();
expect(result).to.equal('http://test.com/foo');
});
it('should throw for invalid URL', () => {
process.env.PUBLIC_URL = 'nope';
expect(() => getPublicUrl()).to.throw();
});
it('should use VERCEL_URL', () => {
process.env.VERCEL_URL = 'jss.uniqueid.vercel.com';
const result = getPublicUrl();
expect(result).to.equal('https://jss.uniqueid.vercel.com');
});
});
describe('getJssEditingSecret', () => {
after(() => {
delete process.env.JSS_EDITING_SECRET;
});
it('should throw if env variable missing', () => {
expect(() => getJssEditingSecret()).to.throw();
});
it('should return env variable', () => {
const secret = '1234abcd';
process.env.JSS_EDITING_SECRET = secret;
const result = getJssEditingSecret();
expect(result).to.equal(secret);
});
});
describe('resolvePointOfSale', () => {
it('should return empty when no point of sale present', () => {
const site: SiteInfo = {
name: 'no-pos',
hostName: 'www.nopos.com',
language: 'en',
};
const language = 'en';
const result = resolvePointOfSale(site, language);
expect(result).to.equal('');
});
it('should return pos for provided language', () => {
const myPoint = 'apos.com';
const site: SiteInfo = {
name: 'apos',
hostName: 'www.apos.com',
pointOfSale: {
en: myPoint,
},
language: 'de-DE',
};
const result = resolvePointOfSale(site, 'en');
expect(result).to.equal(myPoint);
});
it('should return pos for site language as first backup', () => {
const site: SiteInfo = {
name: 'apos',
hostName: 'www.apos.com',
pointOfSale: {
'de-DE': 'depos.com',
'es-ES': 'espos.com',
},
language: 'de-DE',
};
const result = resolvePointOfSale(site, 'en');
expect(result).to.equal('depos.com');
});
it('should return pos for site language when provided language is empty', () => {
const site: SiteInfo = {
name: 'apos',
hostName: 'www.apos.com',
pointOfSale: {
'de-DE': 'depos.com',
'es-ES': 'espos.com',
},
language: 'de-DE',
};
const result = resolvePointOfSale(site, '');
expect(result).to.equal('depos.com');
});
it('should use fallback value when other values missing', () => {
const site: SiteInfo = {
name: 'apos',
hostName: 'www.apos.com',
pointOfSale: {
'de-DE': 'depos.com',
'es-ES': 'espos.com',
'*': 'fallpos.com',
},
language: 'en-CA',
};
const result = resolvePointOfSale(site, 'en');
expect(result).to.equal('fallpos.com');
});
});
});