@newskit-render/core 1.2.4 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +180 -0
- package/components/article/index.tsx +1 -1
- package/components/header/index.tsx +1 -1
- package/package.json +14 -11
- package/pages/account/payment/index.tsx +18 -0
- package/pages/checkout/index.tsx +7 -0
- package/temp/header.tsx +76 -76
- package/components/seo/index.test.tsx +0 -106
- package/components/seo/index.tsx +0 -89
- package/pages/api/account/zuora/generate-rsa.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,186 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.6.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.7...@newskit-render/core@1.6.0) (2021-12-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **PPDSR-520:** Add SEO Component ([#539](https://github.com/newscorp-ghfb/ncu-newskit-render/issues/539)) ([f9a7103](https://github.com/newscorp-ghfb/ncu-newskit-render/commit/f9a71034e9e7224975d785fb47c68b907b4e5935))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [1.5.7](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.6...@newskit-render/core@1.5.7) (2021-12-14)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [1.5.6](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.5...@newskit-render/core@1.5.6) (2021-12-13)
|
|
26
|
+
|
|
27
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## [1.5.5](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.4...@newskit-render/core@1.5.5) (2021-12-13)
|
|
34
|
+
|
|
35
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## [1.5.4](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.3...@newskit-render/core@1.5.4) (2021-12-10)
|
|
42
|
+
|
|
43
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## [1.5.3](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.2...@newskit-render/core@1.5.3) (2021-12-08)
|
|
50
|
+
|
|
51
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## [1.5.2](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.1...@newskit-render/core@1.5.2) (2021-12-03)
|
|
58
|
+
|
|
59
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## [1.5.1](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.5.0...@newskit-render/core@1.5.1) (2021-12-02)
|
|
66
|
+
|
|
67
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# [1.5.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.6...@newskit-render/core@1.5.0) (2021-12-02)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### Features
|
|
77
|
+
|
|
78
|
+
* **PPDSR-517:** Add Grid Component ([#528](https://github.com/newscorp-ghfb/ncu-newskit-render/issues/528)) ([0f8082d](https://github.com/newscorp-ghfb/ncu-newskit-render/commit/0f8082d1490750f408c0c5ec2c7bd6af3a1ace18))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
## [1.4.6](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.5...@newskit-render/core@1.4.6) (2021-11-30)
|
|
85
|
+
|
|
86
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## [1.4.5](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.4...@newskit-render/core@1.4.5) (2021-11-30)
|
|
93
|
+
|
|
94
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
## [1.4.4](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.3...@newskit-render/core@1.4.4) (2021-11-29)
|
|
101
|
+
|
|
102
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## [1.4.3](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.2...@newskit-render/core@1.4.3) (2021-11-29)
|
|
109
|
+
|
|
110
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
## [1.4.2](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.1...@newskit-render/core@1.4.2) (2021-11-26)
|
|
117
|
+
|
|
118
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
## [1.4.1](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.4.0...@newskit-render/core@1.4.1) (2021-11-25)
|
|
125
|
+
|
|
126
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# [1.4.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.3.4...@newskit-render/core@1.4.0) (2021-11-24)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
### Features
|
|
136
|
+
|
|
137
|
+
* Stop storing cancellation reason in local storage ([#517](https://github.com/newscorp-ghfb/ncu-newskit-render/issues/517)) ([8d602db](https://github.com/newscorp-ghfb/ncu-newskit-render/commit/8d602db6fa16078f792f543d5715815cc202822c))
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## [1.3.4](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.3.3...@newskit-render/core@1.3.4) (2021-11-23)
|
|
144
|
+
|
|
145
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
## [1.3.3](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.3.2...@newskit-render/core@1.3.3) (2021-11-23)
|
|
152
|
+
|
|
153
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## [1.3.2](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.3.1...@newskit-render/core@1.3.2) (2021-11-22)
|
|
160
|
+
|
|
161
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
## [1.3.1](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.3.0...@newskit-render/core@1.3.1) (2021-11-22)
|
|
168
|
+
|
|
169
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
# [1.3.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.2.4...@newskit-render/core@1.3.0) (2021-11-22)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### Features
|
|
179
|
+
|
|
180
|
+
* **PPDSR-0:** fix broken dependecy ([#521](https://github.com/newscorp-ghfb/ncu-newskit-render/issues/521)) ([2690dd3](https://github.com/newscorp-ghfb/ncu-newskit-render/commit/2690dd3bc6cf61a88740a0ff935adf461be02416))
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
6
186
|
## [1.2.4](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@1.2.3...@newskit-render/core@1.2.4) (2021-11-18)
|
|
7
187
|
|
|
8
188
|
|
|
@@ -13,13 +13,13 @@ import {
|
|
|
13
13
|
TextBlock,
|
|
14
14
|
Divider,
|
|
15
15
|
} from 'newskit'
|
|
16
|
+
import { SEOComponent } from '@newskit-render/shared-components'
|
|
16
17
|
import MetaBoxComponent from './MetaBox'
|
|
17
18
|
import Ad from '../ad'
|
|
18
19
|
import Highlights from './Highlights'
|
|
19
20
|
import RelatedArticles from './RelatedArticles'
|
|
20
21
|
import RelatedTopics from './RelatedTopics'
|
|
21
22
|
import ShareBarComponent from './ShareBarComponent'
|
|
22
|
-
import SEOComponent from '../seo'
|
|
23
23
|
import {
|
|
24
24
|
URL,
|
|
25
25
|
Slug,
|
|
@@ -68,7 +68,7 @@ const pastDueBanner = {
|
|
|
68
68
|
},
|
|
69
69
|
cancelled: {
|
|
70
70
|
title: 'Your subscription has been cancelled.',
|
|
71
|
-
text: 'You
|
|
71
|
+
text: 'You’ll no longer have access to subscription benefits. To re-activate call 0800 555 1234.',
|
|
72
72
|
},
|
|
73
73
|
treshold: {
|
|
74
74
|
firstNotice: 26,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newskit-render/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Newskit Render - Core package",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -28,22 +28,22 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@apollo/client": "^3.4.16",
|
|
31
|
-
"@newskit-render/api": "^0.
|
|
32
|
-
"@newskit-render/auth": "^0.
|
|
33
|
-
"@newskit-render/checkout": "^0.
|
|
34
|
-
"@newskit-render/my-account": "^0.
|
|
35
|
-
"@newskit-render/shared-components": "^0.
|
|
36
|
-
"@newskit-render/sitemap": "^0.
|
|
37
|
-
"@newskit-render/validation": "^0.
|
|
31
|
+
"@newskit-render/api": "^0.4.2",
|
|
32
|
+
"@newskit-render/auth": "^0.22.2",
|
|
33
|
+
"@newskit-render/checkout": "^0.7.0",
|
|
34
|
+
"@newskit-render/my-account": "^0.114.2",
|
|
35
|
+
"@newskit-render/shared-components": "^0.18.0",
|
|
36
|
+
"@newskit-render/sitemap": "^0.25.2",
|
|
37
|
+
"@newskit-render/validation": "^0.26.2",
|
|
38
38
|
"cross-fetch": "^3.1.4",
|
|
39
39
|
"graphql": "^15.6.0",
|
|
40
40
|
"newrelic": "^7.1.0",
|
|
41
|
-
"newskit": "
|
|
41
|
+
"newskit": "4.0.1",
|
|
42
42
|
"next": "^12.0.2",
|
|
43
43
|
"react": "^17.0.1",
|
|
44
44
|
"react-dom": "^17.0.2",
|
|
45
45
|
"react-helmet": "^6.1.0",
|
|
46
|
-
"
|
|
46
|
+
"react-hook-form": "7.8.4"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@apollo/react-testing": "^4.0.0",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@typescript-eslint/eslint-plugin": "^3.7.1",
|
|
58
58
|
"@typescript-eslint/parser": "^3.7.1",
|
|
59
59
|
"babel-jest": "^26.3.0",
|
|
60
|
-
"cypress": "
|
|
60
|
+
"cypress": "9.0.0",
|
|
61
61
|
"eslint": "^6.6.0",
|
|
62
62
|
"eslint-config-airbnb": "^18.2.0",
|
|
63
63
|
"eslint-config-airbnb-typescript": "^9.0.0",
|
|
@@ -85,5 +85,8 @@
|
|
|
85
85
|
},
|
|
86
86
|
"publishConfig": {
|
|
87
87
|
"access": "public"
|
|
88
|
+
},
|
|
89
|
+
"resolutions": {
|
|
90
|
+
"newskit/react-hook-form": "7.8.4"
|
|
88
91
|
}
|
|
89
92
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import newrelic from 'newrelic'
|
|
2
|
+
import {
|
|
3
|
+
Payment,
|
|
4
|
+
getProviderProps,
|
|
5
|
+
PaymentProvider,
|
|
6
|
+
} from '@newskit-render/my-account'
|
|
7
|
+
|
|
8
|
+
export default Payment
|
|
9
|
+
|
|
10
|
+
export const getServerSideProps = async (context) => {
|
|
11
|
+
newrelic.setTransactionName('Edit Payment method')
|
|
12
|
+
|
|
13
|
+
return getProviderProps({
|
|
14
|
+
...context,
|
|
15
|
+
provider: 'Payment',
|
|
16
|
+
paymentProvider: PaymentProvider.Zuora,
|
|
17
|
+
})
|
|
18
|
+
}
|
package/temp/header.tsx
CHANGED
|
@@ -103,7 +103,7 @@ const pastDueBanner = {
|
|
|
103
103
|
},
|
|
104
104
|
cancelled: {
|
|
105
105
|
title: 'Your subscription has been cancelled.',
|
|
106
|
-
text: 'You
|
|
106
|
+
text: 'You’ll no longer have access to subscription benefits. To re-activate call 0800 555 1234.',
|
|
107
107
|
},
|
|
108
108
|
treshold: {
|
|
109
109
|
firstNotice: 26,
|
|
@@ -152,87 +152,87 @@ const Header: React.FC<{ user: UserData }> = ({ user }) => {
|
|
|
152
152
|
|
|
153
153
|
return (
|
|
154
154
|
<>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<Stack
|
|
159
|
-
flow="horizontal-center"
|
|
160
|
-
stackDistribution="space-between"
|
|
161
|
-
wrap="nowrap"
|
|
162
|
-
>
|
|
163
|
-
<NextLink
|
|
164
|
-
type="standalone"
|
|
165
|
-
overrides={{ stylePreset: 'linkStandaloneInverse' }}
|
|
166
|
-
href="/"
|
|
167
|
-
aria-label="Logo Link"
|
|
168
|
-
>
|
|
169
|
-
<Visible md lg xl>
|
|
170
|
-
<NewsKitLogoFull color="white" size="sizing120" />
|
|
171
|
-
</Visible>
|
|
172
|
-
<Visible xs sm>
|
|
173
|
-
<NewsKitLogoShort color="white" size="sizing120" />
|
|
174
|
-
</Visible>
|
|
175
|
-
</NextLink>
|
|
155
|
+
<StyledHeader aria-label="StyledHeader">
|
|
156
|
+
<MainGrid>
|
|
157
|
+
<Cell xs={12}>
|
|
176
158
|
<Stack
|
|
177
159
|
flow="horizontal-center"
|
|
178
|
-
stackDistribution="
|
|
160
|
+
stackDistribution="space-between"
|
|
179
161
|
wrap="nowrap"
|
|
180
162
|
>
|
|
181
|
-
<
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
163
|
+
<NextLink
|
|
164
|
+
type="standalone"
|
|
165
|
+
overrides={{ stylePreset: 'linkStandaloneInverse' }}
|
|
166
|
+
href="/"
|
|
167
|
+
aria-label="Logo Link"
|
|
168
|
+
>
|
|
169
|
+
<Visible md lg xl>
|
|
170
|
+
<NewsKitLogoFull color="white" size="sizing120" />
|
|
171
|
+
</Visible>
|
|
172
|
+
<Visible xs sm>
|
|
173
|
+
<NewsKitLogoShort color="white" size="sizing120" />
|
|
174
|
+
</Visible>
|
|
175
|
+
</NextLink>
|
|
176
|
+
<Stack
|
|
177
|
+
flow="horizontal-center"
|
|
178
|
+
stackDistribution="flex-end"
|
|
179
|
+
wrap="nowrap"
|
|
180
|
+
>
|
|
181
|
+
<NavigationContainer show={showMenu}>
|
|
182
|
+
<Navigation>
|
|
183
|
+
{showMenu && (
|
|
184
|
+
<Block
|
|
185
|
+
spaceStack="space050"
|
|
186
|
+
data-testid="mobile-block-space"
|
|
187
|
+
/>
|
|
188
|
+
)}
|
|
189
|
+
<NavButton
|
|
190
|
+
buttonText="Section One"
|
|
191
|
+
href="/section-one"
|
|
192
|
+
isMobile={showMenu}
|
|
193
|
+
ariaLabel="Section One Link"
|
|
194
|
+
/>
|
|
195
|
+
<NavButton
|
|
196
|
+
buttonText="Section Two"
|
|
197
|
+
href="/section-two"
|
|
198
|
+
isMobile={showMenu}
|
|
199
|
+
ariaLabel="Section Two Link"
|
|
200
|
+
/>
|
|
201
|
+
<NavButton
|
|
202
|
+
buttonText="Section Three"
|
|
203
|
+
href="/section-three"
|
|
204
|
+
isMobile={showMenu}
|
|
205
|
+
ariaLabel="Section Three Link"
|
|
206
|
+
/>
|
|
207
|
+
</Navigation>
|
|
208
|
+
</NavigationContainer>
|
|
209
|
+
<Visible xs sm>
|
|
210
|
+
<Block spaceInline="space050">
|
|
211
|
+
<IconFilledMenu
|
|
212
|
+
overrides={{
|
|
213
|
+
size: 'iconSize030',
|
|
214
|
+
stylePreset: 'linkStandaloneInverse',
|
|
215
|
+
}}
|
|
216
|
+
onClick={mobileMenuControl}
|
|
217
|
+
onKeyDown={handleEnterKeyPress(mobileMenuControl)}
|
|
218
|
+
role="button"
|
|
219
|
+
tabIndex={0}
|
|
220
|
+
aria-label="Mobile Menu Button"
|
|
221
|
+
data-testid="mobile-menu-btn"
|
|
187
222
|
/>
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
href="/section-one"
|
|
192
|
-
isMobile={showMenu}
|
|
193
|
-
ariaLabel="Section One Link"
|
|
194
|
-
/>
|
|
195
|
-
<NavButton
|
|
196
|
-
buttonText="Section Two"
|
|
197
|
-
href="/section-two"
|
|
198
|
-
isMobile={showMenu}
|
|
199
|
-
ariaLabel="Section Two Link"
|
|
200
|
-
/>
|
|
201
|
-
<NavButton
|
|
202
|
-
buttonText="Section Three"
|
|
203
|
-
href="/section-three"
|
|
204
|
-
isMobile={showMenu}
|
|
205
|
-
ariaLabel="Section Three Link"
|
|
206
|
-
/>
|
|
207
|
-
</Navigation>
|
|
208
|
-
</NavigationContainer>
|
|
209
|
-
<Visible xs sm>
|
|
210
|
-
<Block spaceInline="space050">
|
|
211
|
-
<IconFilledMenu
|
|
212
|
-
overrides={{
|
|
213
|
-
size: 'iconSize030',
|
|
214
|
-
stylePreset: 'linkStandaloneInverse',
|
|
215
|
-
}}
|
|
216
|
-
onClick={mobileMenuControl}
|
|
217
|
-
onKeyDown={handleEnterKeyPress(mobileMenuControl)}
|
|
218
|
-
role="button"
|
|
219
|
-
tabIndex={0}
|
|
220
|
-
aria-label="Mobile Menu Button"
|
|
221
|
-
data-testid="mobile-menu-btn"
|
|
222
|
-
/>
|
|
223
|
-
</Block>
|
|
224
|
-
</Visible>
|
|
223
|
+
</Block>
|
|
224
|
+
</Visible>
|
|
225
|
+
</Stack>
|
|
225
226
|
</Stack>
|
|
226
|
-
</
|
|
227
|
-
</
|
|
228
|
-
</
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
</>
|
|
227
|
+
</Cell>
|
|
228
|
+
</MainGrid>
|
|
229
|
+
</StyledHeader>
|
|
230
|
+
<PastDueBannerExternal
|
|
231
|
+
pastDueBanner={pastDueBanner}
|
|
232
|
+
vxInstances={user?.vxInstances}
|
|
233
|
+
wrapper={BannerContainer}
|
|
234
|
+
/>
|
|
235
|
+
</>
|
|
236
236
|
)
|
|
237
237
|
}
|
|
238
238
|
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { render } from '@testing-library/react'
|
|
3
|
-
import SEOComponent, { limitString } from './index'
|
|
4
|
-
|
|
5
|
-
const getMeta = (metaName: string) => {
|
|
6
|
-
const metas = document.getElementsByTagName('meta')
|
|
7
|
-
for (let i = 0; i < metas.length; i += 1) {
|
|
8
|
-
if (
|
|
9
|
-
metas[i].getAttribute('name') === metaName ||
|
|
10
|
-
metas[i].getAttribute('property') === metaName
|
|
11
|
-
) {
|
|
12
|
-
return metas[i].getAttribute('content')
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return false
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const getLink = (linkRel: string, attr: string) => {
|
|
19
|
-
const link = document.getElementsByTagName('link')
|
|
20
|
-
for (let i = 0; i < link.length; i += 1) {
|
|
21
|
-
if (link[i].getAttribute('rel') === linkRel) {
|
|
22
|
-
return link[i].getAttribute(attr)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return false
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
jest.mock('next/head', () => {
|
|
29
|
-
return {
|
|
30
|
-
__esModule: true,
|
|
31
|
-
default: ({ children }: { children: Array<React.ReactElement> }) => {
|
|
32
|
-
return <>{children}</>
|
|
33
|
-
},
|
|
34
|
-
}
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
describe('SEOComponent tests', () => {
|
|
38
|
-
const Props = {
|
|
39
|
-
title: 'test title for SEOComponent',
|
|
40
|
-
description:
|
|
41
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tincidunt blandit orci vel elementum. Integer malesuada quam in ullamcorper condimentum. Integer sollicitudin non enim sed posuere.',
|
|
42
|
-
url: 'https://test-url/test',
|
|
43
|
-
siteHost: 'https://siteHost.co.uk',
|
|
44
|
-
fbType: 'article',
|
|
45
|
-
fbImageUrl: 'https://test-uri/image',
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
test('SEOComponent with mandatory props', () => {
|
|
49
|
-
render(<SEOComponent {...Props} />, {
|
|
50
|
-
container: document.head,
|
|
51
|
-
})
|
|
52
|
-
expect(document.title).toBe(Props.title)
|
|
53
|
-
expect(getMeta('description')).toBe(limitString(Props.description, 155))
|
|
54
|
-
expect(getMeta('robots')).toBe('max-image-preview:large')
|
|
55
|
-
expect(getMeta('og:title')).toBe(Props.title)
|
|
56
|
-
expect(getMeta('og:type')).toBe(Props.fbType)
|
|
57
|
-
expect(getMeta('og:url')).toBe(Props.url)
|
|
58
|
-
expect(getMeta('twitter:card')).toBe('summary')
|
|
59
|
-
expect(getMeta('twitter:title')).toBe(Props.title)
|
|
60
|
-
expect(getMeta('twitter:site')).toBe(false)
|
|
61
|
-
expect(getMeta('twitter:description')).toBe(false)
|
|
62
|
-
expect(getMeta('twitter:image')).toBe(false)
|
|
63
|
-
expect(getMeta('twitter:image:alt')).toBe(false)
|
|
64
|
-
expect(getLink('canonical', 'href')).toBe(Props.url)
|
|
65
|
-
expect(getLink('alternate', 'href')).toBe(Props.siteHost)
|
|
66
|
-
expect(getLink('alternate', 'hreflang')).toBe('en')
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
test('SEOComponent with optional props', () => {
|
|
70
|
-
const extraProps = {
|
|
71
|
-
...Props,
|
|
72
|
-
gscId: 'asfdrtsdvs',
|
|
73
|
-
fbTitle: 'test facebook title',
|
|
74
|
-
twUsername: '@username',
|
|
75
|
-
twTitle: 'test twitter title',
|
|
76
|
-
twDescription:
|
|
77
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tincidunt blandit orci vel elementum. Integer malesuada quam in ullamcorper condimentum.',
|
|
78
|
-
twImageUrl: 'https://test-uri/image-twitter',
|
|
79
|
-
twImageAlt: 'test alt',
|
|
80
|
-
hrefLang: 'en-GB',
|
|
81
|
-
maxImagePreview: 'standard' as 'none' | 'standard' | 'large',
|
|
82
|
-
}
|
|
83
|
-
render(<SEOComponent {...extraProps} />, {
|
|
84
|
-
container: document.head,
|
|
85
|
-
})
|
|
86
|
-
expect(document.title).toBe(extraProps.title)
|
|
87
|
-
expect(getMeta('description')).toBe(
|
|
88
|
-
limitString(extraProps.description, 155)
|
|
89
|
-
)
|
|
90
|
-
expect(getMeta('robots')).toBe(
|
|
91
|
-
`max-image-preview:${extraProps.maxImagePreview}`
|
|
92
|
-
)
|
|
93
|
-
expect(getMeta('og:title')).toBe(extraProps.fbTitle)
|
|
94
|
-
expect(getMeta('og:type')).toBe(extraProps.fbType)
|
|
95
|
-
expect(getMeta('og:url')).toBe(extraProps.url)
|
|
96
|
-
expect(getMeta('twitter:card')).toBe('summary')
|
|
97
|
-
expect(getMeta('twitter:title')).toBe(extraProps.twTitle)
|
|
98
|
-
expect(getMeta('twitter:site')).toBe(extraProps.twUsername)
|
|
99
|
-
expect(getMeta('twitter:description')).toBe(extraProps.twDescription)
|
|
100
|
-
expect(getMeta('twitter:image')).toBe(extraProps.twImageUrl)
|
|
101
|
-
expect(getMeta('twitter:image:alt')).toBe(extraProps.twImageAlt)
|
|
102
|
-
expect(getLink('canonical', 'href')).toBe(extraProps.url)
|
|
103
|
-
expect(getLink('alternate', 'href')).toBe(extraProps.siteHost)
|
|
104
|
-
expect(getLink('alternate', 'hreflang')).toBe(extraProps.hrefLang)
|
|
105
|
-
})
|
|
106
|
-
})
|
package/components/seo/index.tsx
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import Head from 'next/head'
|
|
3
|
-
import striptags from 'striptags'
|
|
4
|
-
|
|
5
|
-
export const limitString = (text: string, limit: number) =>
|
|
6
|
-
text.length > limit ? text.substr(0, limit) : text
|
|
7
|
-
|
|
8
|
-
type Props = {
|
|
9
|
-
title: string
|
|
10
|
-
description: string
|
|
11
|
-
url: string
|
|
12
|
-
siteHost: string
|
|
13
|
-
hrefLang?: string
|
|
14
|
-
maxImagePreview?: 'none' | 'standard' | 'large'
|
|
15
|
-
gscId?: string
|
|
16
|
-
fbTitle?: string
|
|
17
|
-
fbType: string
|
|
18
|
-
fbImageUrl: string
|
|
19
|
-
twUsername?: string
|
|
20
|
-
twTitle?: string
|
|
21
|
-
twDescription?: string
|
|
22
|
-
twImageUrl?: string
|
|
23
|
-
twImageAlt?: string
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const SEOComponent: React.FC<Props> = ({
|
|
27
|
-
title,
|
|
28
|
-
description,
|
|
29
|
-
url,
|
|
30
|
-
siteHost,
|
|
31
|
-
hrefLang = 'en',
|
|
32
|
-
maxImagePreview = 'large',
|
|
33
|
-
gscId,
|
|
34
|
-
fbTitle,
|
|
35
|
-
fbType,
|
|
36
|
-
fbImageUrl,
|
|
37
|
-
twUsername,
|
|
38
|
-
twTitle,
|
|
39
|
-
twDescription,
|
|
40
|
-
twImageUrl,
|
|
41
|
-
twImageAlt,
|
|
42
|
-
}) => (
|
|
43
|
-
<Head>
|
|
44
|
-
<title>{title}</title>
|
|
45
|
-
<meta
|
|
46
|
-
name="description"
|
|
47
|
-
content={limitString(striptags(description), 155)}
|
|
48
|
-
key="description"
|
|
49
|
-
/>
|
|
50
|
-
<link rel="canonical" href={url} />
|
|
51
|
-
<link rel="alternate" href={siteHost} hrefLang={hrefLang} />
|
|
52
|
-
<meta
|
|
53
|
-
name="robots"
|
|
54
|
-
content={`max-image-preview:${maxImagePreview}`}
|
|
55
|
-
key="max-image-preview"
|
|
56
|
-
/>
|
|
57
|
-
{gscId && <meta name="google-site-verification" content={gscId} />}
|
|
58
|
-
|
|
59
|
-
<meta property="og:title" content={fbTitle || title} key="ogtitle" />
|
|
60
|
-
<meta property="og:type" content={fbType} key="ogtype" />
|
|
61
|
-
<meta property="og:url" content={url} key="ogurl" />
|
|
62
|
-
<meta property="og:image" content={fbImageUrl} key="ogimage" />
|
|
63
|
-
|
|
64
|
-
<meta name="twitter:card" content="summary" key="twcard" />
|
|
65
|
-
<meta
|
|
66
|
-
name="twitter:title"
|
|
67
|
-
content={limitString(twTitle || title, 70)}
|
|
68
|
-
key="twtitle"
|
|
69
|
-
/>
|
|
70
|
-
{twUsername && (
|
|
71
|
-
<meta name="twitter:site" content={twUsername} key="twsite" />
|
|
72
|
-
)}
|
|
73
|
-
{twDescription && (
|
|
74
|
-
<meta
|
|
75
|
-
name="twitter:description"
|
|
76
|
-
content={limitString(striptags(twDescription), 200)}
|
|
77
|
-
key="twdescription"
|
|
78
|
-
/>
|
|
79
|
-
)}
|
|
80
|
-
{twImageUrl && (
|
|
81
|
-
<meta name="twitter:image" content={twImageUrl} key="twImage" />
|
|
82
|
-
)}
|
|
83
|
-
{twImageAlt && (
|
|
84
|
-
<meta name="twitter:image:alt" content={twImageAlt} key="twImageAlt" />
|
|
85
|
-
)}
|
|
86
|
-
</Head>
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
export default SEOComponent
|