-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathminsoo-web.test.ts
More file actions
101 lines (84 loc) · 2.73 KB
/
minsoo-web.test.ts
File metadata and controls
101 lines (84 loc) · 2.73 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
import { addQuery, getHashPart, replaceKeyValue } from './minsoo-web'
describe('getHashPart', () => {
it('case 1', () => {
expect(getHashPart('minsoo#foo')).toEqual({
nonHash: 'minsoo',
hash: '#foo',
})
})
it('case 2', () => {
expect(getHashPart('http://www.minsoo#foo')).toEqual({
nonHash: 'http://www.minsoo',
hash: '#foo',
})
})
it('case 3', () => {
expect(getHashPart('http://www.minsoo')).toEqual({
nonHash: 'http://www.minsoo',
hash: '',
})
})
it('case 4: 일반적이진 않지만, 의도치 않게 해시가 여러개 들어가있는 경우', () => {
expect(getHashPart('http://www.minsoo#foo#minsoo')).toEqual({
nonHash: 'http://www.minsoo',
hash: '#foo#minsoo',
})
})
})
describe('replaceKeyValue', () => {
it('case 1', () => {
expect(replaceKeyValue('minsoo?key=foo', 'key', 'bar')).toBe(
'minsoo?key=bar',
)
})
it('case 2', () => {
expect(replaceKeyValue('minsoo?foo=foo', 'key', 'bar')).toBe(
'minsoo?foo=foo',
)
})
it('case 3', () => {
expect(replaceKeyValue('minsoo?key=foo&key=baz', 'key', 'bar')).toBe(
'minsoo?key=bar&key=bar',
)
})
})
describe('addQuery', () => {
test('case 0: URL 형식이 굳이 아니여도 동작', () => {
expect(addQuery('www.linkedin.com/?name=elon#top', 'name', 'musk')).toBe(
'www.linkedin.com/?name=musk#top',
)
})
test('case 1', () => {
expect(addQuery('https://www.linkedin.com/', 'key', 'value')).toBe(
'https://www.linkedin.com/?key=value',
)
})
test('case 2: 기존 URL에 이미 쿼리가 있는 경우', () => {
expect(
addQuery('https://www.linkedin.com/?name=elon', 'key', 'value'),
).toBe('https://www.linkedin.com/?name=elon&key=value')
})
test('case 3: 기존 URL에 hash가 있는 경우', () => {
expect(
addQuery('https://www.linkedin.com/?name=elon#top', 'key', 'value'),
).toBe('https://www.linkedin.com/?name=elon&key=value#top')
})
test('case 4: 기존 쿼리와 추가하려는 쿼리의 key가 동일한 경우', () => {
const URL = 'https://www.linkedin.com/?name=elon#top'
expect(addQuery(URL, 'name', 'musk')).toBe(
'https://www.linkedin.com/?name=musk#top',
)
expect(addQuery(URL, 'name', 'musk')).toBe(
'https://www.linkedin.com/?name=musk#top',
)
})
test('case 5: 기존 쿼리와 추가하려는 쿼리의 key가 동일한 경우', () => {
const URL = 'https://www.linkedin.com/?name=elon&name=minsoo#top'
expect(addQuery(URL, 'name', 'musk')).toBe(
'https://www.linkedin.com/?name=musk&name=musk#top',
)
expect(addQuery(URL, 'name', 'musk')).toBe(
'https://www.linkedin.com/?name=musk&name=musk#top',
)
})
})