forked from WordPress/gutenberg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
get-updated-link-attributes.js
113 lines (92 loc) · 3.03 KB
/
get-updated-link-attributes.js
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
/**
* Internal dependencies
*/
import { getUpdatedLinkAttributes } from '../get-updated-link-attributes';
describe( 'getUpdatedLinkAttributes method', () => {
it( 'should correctly handle unassigned rel', () => {
const options = {
url: 'example.com',
opensInNewTab: true,
nofollow: false,
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( '_blank' );
expect( result.rel ).toEqual( 'noreferrer noopener' );
} );
it( 'should return empty rel value as undefined', () => {
const options = {
url: 'example.com',
opensInNewTab: false,
nofollow: false,
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( undefined );
expect( result.rel ).toEqual( undefined );
} );
it( 'should correctly handle rel with existing values', () => {
const options = {
url: 'example.com',
opensInNewTab: true,
nofollow: true,
rel: 'rel_value',
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( '_blank' );
expect( result.rel ).toEqual(
'rel_value noreferrer noopener nofollow'
);
} );
it( 'should correctly update link attributes with opensInNewTab', () => {
const options = {
url: 'example.com',
opensInNewTab: true,
nofollow: false,
rel: 'rel_value',
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( '_blank' );
expect( result.rel ).toEqual( 'rel_value noreferrer noopener' );
} );
it( 'should correctly update link attributes with nofollow', () => {
const options = {
url: 'example.com',
opensInNewTab: false,
nofollow: true,
rel: 'rel_value',
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( undefined );
expect( result.rel ).toEqual( 'rel_value nofollow' );
} );
it( 'should correctly handle rel with existing nofollow values and remove duplicates', () => {
const options = {
url: 'example.com',
opensInNewTab: true,
nofollow: true,
rel: 'rel_value nofollow',
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( '_blank' );
expect( result.rel ).toEqual(
'rel_value nofollow noreferrer noopener'
);
} );
it( 'should correctly handle rel with existing new tab values and remove duplicates', () => {
const options = {
url: 'example.com',
opensInNewTab: true,
nofollow: false,
rel: 'rel_value noreferrer noopener',
};
const result = getUpdatedLinkAttributes( options );
expect( result.url ).toEqual( 'http://example.com' );
expect( result.linkTarget ).toEqual( '_blank' );
expect( result.rel ).toEqual( 'rel_value noreferrer noopener' );
} );
} );