wovnrb 3.11.1 → 3.13.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/README.md +1 -1
- data/docker/rails/TestSite/yarn.lock +149 -53
- data/lib/wovnrb/api_translator.rb +4 -1
- data/lib/wovnrb/lang.rb +3 -3
- data/lib/wovnrb/services/html_converter.rb +18 -0
- data/lib/wovnrb/settings.rb +2 -2
- data/lib/wovnrb/store.rb +9 -1
- data/lib/wovnrb/version.rb +1 -1
- data/lib/wovnrb.rb +3 -3
- data/test/lib/api_translator_test.rb +32 -21
- data/test/lib/custom_domain/custom_domain_langs_test.rb +2 -2
- data/test/lib/lang_test.rb +1 -1
- data/test/lib/services/html_converter_test.rb +57 -19
- data/test/lib/wovnrb_test.rb +2 -2
- data/test/test_helper.rb +1 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c25c86e04efab85fc760c24f2fb1905e2cb95a8636b2ad27a9f59bbef78e99e5
|
4
|
+
data.tar.gz: ab246aa58e1cb9ed5989f262ac8144eac400c77b556a5d9fb259e62534b9bac5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5f42f8edb1b03dc3fe14d513aac9dffc97df0b62b9186fabba98b60373335579be893eddd4305c3e6cdbea9c9798e758fc73ceb8077f0f044efb36b0b6fb17c
|
7
|
+
data.tar.gz: 48431e3fba479475e39ed4a5a0f77ca2e53e8ecc4e474ae27166a613e62da176069c40e90349b2fd2764c3d6f66577651ba7b8eded732ccf23cdbb82fb6886bd
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
README.ja.md
|
@@ -24,6 +24,14 @@
|
|
24
24
|
dependencies:
|
25
25
|
"@babel/highlight" "^7.18.6"
|
26
26
|
|
27
|
+
"@babel/code-frame@^7.22.13":
|
28
|
+
version "7.22.13"
|
29
|
+
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
|
30
|
+
integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==
|
31
|
+
dependencies:
|
32
|
+
"@babel/highlight" "^7.22.13"
|
33
|
+
chalk "^2.4.2"
|
34
|
+
|
27
35
|
"@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8":
|
28
36
|
version "7.13.15"
|
29
37
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4"
|
@@ -55,15 +63,6 @@
|
|
55
63
|
json5 "^2.2.1"
|
56
64
|
semver "^6.3.0"
|
57
65
|
|
58
|
-
"@babel/generator@^7.13.16":
|
59
|
-
version "7.13.16"
|
60
|
-
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14"
|
61
|
-
integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg==
|
62
|
-
dependencies:
|
63
|
-
"@babel/types" "^7.13.16"
|
64
|
-
jsesc "^2.5.1"
|
65
|
-
source-map "^0.5.0"
|
66
|
-
|
67
66
|
"@babel/generator@^7.19.0":
|
68
67
|
version "7.19.0"
|
69
68
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a"
|
@@ -73,6 +72,16 @@
|
|
73
72
|
"@jridgewell/gen-mapping" "^0.3.2"
|
74
73
|
jsesc "^2.5.1"
|
75
74
|
|
75
|
+
"@babel/generator@^7.23.0":
|
76
|
+
version "7.23.0"
|
77
|
+
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420"
|
78
|
+
integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==
|
79
|
+
dependencies:
|
80
|
+
"@babel/types" "^7.23.0"
|
81
|
+
"@jridgewell/gen-mapping" "^0.3.2"
|
82
|
+
"@jridgewell/trace-mapping" "^0.3.17"
|
83
|
+
jsesc "^2.5.1"
|
84
|
+
|
76
85
|
"@babel/helper-annotate-as-pure@^7.12.13":
|
77
86
|
version "7.12.13"
|
78
87
|
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
|
@@ -172,6 +181,11 @@
|
|
172
181
|
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
|
173
182
|
integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
|
174
183
|
|
184
|
+
"@babel/helper-environment-visitor@^7.22.20":
|
185
|
+
version "7.22.20"
|
186
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
|
187
|
+
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
|
188
|
+
|
175
189
|
"@babel/helper-explode-assignable-expression@^7.18.6":
|
176
190
|
version "7.18.6"
|
177
191
|
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096"
|
@@ -196,6 +210,14 @@
|
|
196
210
|
"@babel/template" "^7.18.10"
|
197
211
|
"@babel/types" "^7.19.0"
|
198
212
|
|
213
|
+
"@babel/helper-function-name@^7.23.0":
|
214
|
+
version "7.23.0"
|
215
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
|
216
|
+
integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
|
217
|
+
dependencies:
|
218
|
+
"@babel/template" "^7.22.15"
|
219
|
+
"@babel/types" "^7.23.0"
|
220
|
+
|
199
221
|
"@babel/helper-get-function-arity@^7.12.13":
|
200
222
|
version "7.12.13"
|
201
223
|
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
|
@@ -210,6 +232,13 @@
|
|
210
232
|
dependencies:
|
211
233
|
"@babel/types" "^7.18.6"
|
212
234
|
|
235
|
+
"@babel/helper-hoist-variables@^7.22.5":
|
236
|
+
version "7.22.5"
|
237
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
|
238
|
+
integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
|
239
|
+
dependencies:
|
240
|
+
"@babel/types" "^7.22.5"
|
241
|
+
|
213
242
|
"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12":
|
214
243
|
version "7.13.12"
|
215
244
|
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
|
@@ -328,11 +357,23 @@
|
|
328
357
|
dependencies:
|
329
358
|
"@babel/types" "^7.18.6"
|
330
359
|
|
360
|
+
"@babel/helper-split-export-declaration@^7.22.6":
|
361
|
+
version "7.22.6"
|
362
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
|
363
|
+
integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
|
364
|
+
dependencies:
|
365
|
+
"@babel/types" "^7.22.5"
|
366
|
+
|
331
367
|
"@babel/helper-string-parser@^7.18.10":
|
332
368
|
version "7.18.10"
|
333
369
|
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
|
334
370
|
integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
|
335
371
|
|
372
|
+
"@babel/helper-string-parser@^7.22.5":
|
373
|
+
version "7.22.5"
|
374
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
|
375
|
+
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
|
376
|
+
|
336
377
|
"@babel/helper-validator-identifier@^7.12.11":
|
337
378
|
version "7.12.11"
|
338
379
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
@@ -343,6 +384,11 @@
|
|
343
384
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
|
344
385
|
integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==
|
345
386
|
|
387
|
+
"@babel/helper-validator-identifier@^7.22.20":
|
388
|
+
version "7.22.20"
|
389
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
|
390
|
+
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
|
391
|
+
|
346
392
|
"@babel/helper-validator-option@^7.12.17":
|
347
393
|
version "7.12.17"
|
348
394
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
|
@@ -390,7 +436,16 @@
|
|
390
436
|
chalk "^2.0.0"
|
391
437
|
js-tokens "^4.0.0"
|
392
438
|
|
393
|
-
"@babel/
|
439
|
+
"@babel/highlight@^7.22.13":
|
440
|
+
version "7.22.20"
|
441
|
+
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54"
|
442
|
+
integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==
|
443
|
+
dependencies:
|
444
|
+
"@babel/helper-validator-identifier" "^7.22.20"
|
445
|
+
chalk "^2.4.2"
|
446
|
+
js-tokens "^4.0.0"
|
447
|
+
|
448
|
+
"@babel/parser@^7.12.13":
|
394
449
|
version "7.13.16"
|
395
450
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37"
|
396
451
|
integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw==
|
@@ -400,6 +455,11 @@
|
|
400
455
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c"
|
401
456
|
integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==
|
402
457
|
|
458
|
+
"@babel/parser@^7.22.15", "@babel/parser@^7.23.0":
|
459
|
+
version "7.23.0"
|
460
|
+
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
|
461
|
+
integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
|
462
|
+
|
403
463
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
|
404
464
|
version "7.18.6"
|
405
465
|
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
|
@@ -1088,37 +1148,32 @@
|
|
1088
1148
|
"@babel/parser" "^7.18.10"
|
1089
1149
|
"@babel/types" "^7.18.10"
|
1090
1150
|
|
1091
|
-
"@babel/
|
1092
|
-
version "7.
|
1093
|
-
resolved "https://registry.yarnpkg.com/@babel/
|
1094
|
-
integrity sha512-
|
1095
|
-
dependencies:
|
1096
|
-
"@babel/code-frame" "^7.
|
1097
|
-
"@babel/
|
1098
|
-
"@babel/
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1151
|
+
"@babel/template@^7.22.15":
|
1152
|
+
version "7.22.15"
|
1153
|
+
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
|
1154
|
+
integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
|
1155
|
+
dependencies:
|
1156
|
+
"@babel/code-frame" "^7.22.13"
|
1157
|
+
"@babel/parser" "^7.22.15"
|
1158
|
+
"@babel/types" "^7.22.15"
|
1159
|
+
|
1160
|
+
"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0":
|
1161
|
+
version "7.23.2"
|
1162
|
+
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8"
|
1163
|
+
integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==
|
1164
|
+
dependencies:
|
1165
|
+
"@babel/code-frame" "^7.22.13"
|
1166
|
+
"@babel/generator" "^7.23.0"
|
1167
|
+
"@babel/helper-environment-visitor" "^7.22.20"
|
1168
|
+
"@babel/helper-function-name" "^7.23.0"
|
1169
|
+
"@babel/helper-hoist-variables" "^7.22.5"
|
1170
|
+
"@babel/helper-split-export-declaration" "^7.22.6"
|
1171
|
+
"@babel/parser" "^7.23.0"
|
1172
|
+
"@babel/types" "^7.23.0"
|
1102
1173
|
debug "^4.1.0"
|
1103
1174
|
globals "^11.1.0"
|
1104
1175
|
|
1105
|
-
"@babel/
|
1106
|
-
version "7.19.0"
|
1107
|
-
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed"
|
1108
|
-
integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==
|
1109
|
-
dependencies:
|
1110
|
-
"@babel/code-frame" "^7.18.6"
|
1111
|
-
"@babel/generator" "^7.19.0"
|
1112
|
-
"@babel/helper-environment-visitor" "^7.18.9"
|
1113
|
-
"@babel/helper-function-name" "^7.19.0"
|
1114
|
-
"@babel/helper-hoist-variables" "^7.18.6"
|
1115
|
-
"@babel/helper-split-export-declaration" "^7.18.6"
|
1116
|
-
"@babel/parser" "^7.19.0"
|
1117
|
-
"@babel/types" "^7.19.0"
|
1118
|
-
debug "^4.1.0"
|
1119
|
-
globals "^11.1.0"
|
1120
|
-
|
1121
|
-
"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.4.4":
|
1176
|
+
"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.4.4":
|
1122
1177
|
version "7.13.17"
|
1123
1178
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4"
|
1124
1179
|
integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA==
|
@@ -1135,6 +1190,15 @@
|
|
1135
1190
|
"@babel/helper-validator-identifier" "^7.18.6"
|
1136
1191
|
to-fast-properties "^2.0.0"
|
1137
1192
|
|
1193
|
+
"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0":
|
1194
|
+
version "7.23.0"
|
1195
|
+
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb"
|
1196
|
+
integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==
|
1197
|
+
dependencies:
|
1198
|
+
"@babel/helper-string-parser" "^7.22.5"
|
1199
|
+
"@babel/helper-validator-identifier" "^7.22.20"
|
1200
|
+
to-fast-properties "^2.0.0"
|
1201
|
+
|
1138
1202
|
"@csstools/convert-colors@^1.4.0":
|
1139
1203
|
version "1.4.0"
|
1140
1204
|
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
|
@@ -1162,6 +1226,11 @@
|
|
1162
1226
|
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
1163
1227
|
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
1164
1228
|
|
1229
|
+
"@jridgewell/resolve-uri@^3.1.0":
|
1230
|
+
version "3.1.1"
|
1231
|
+
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
|
1232
|
+
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
|
1233
|
+
|
1165
1234
|
"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
|
1166
1235
|
version "1.1.2"
|
1167
1236
|
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
@@ -1180,6 +1249,19 @@
|
|
1180
1249
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
1181
1250
|
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
1182
1251
|
|
1252
|
+
"@jridgewell/sourcemap-codec@^1.4.14":
|
1253
|
+
version "1.4.15"
|
1254
|
+
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
1255
|
+
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
1256
|
+
|
1257
|
+
"@jridgewell/trace-mapping@^0.3.17":
|
1258
|
+
version "0.3.19"
|
1259
|
+
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
|
1260
|
+
integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
|
1261
|
+
dependencies:
|
1262
|
+
"@jridgewell/resolve-uri" "^3.1.0"
|
1263
|
+
"@jridgewell/sourcemap-codec" "^1.4.14"
|
1264
|
+
|
1183
1265
|
"@jridgewell/trace-mapping@^0.3.9":
|
1184
1266
|
version "0.3.15"
|
1185
1267
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
|
@@ -1766,11 +1848,16 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
|
|
1766
1848
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
1767
1849
|
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
1768
1850
|
|
1769
|
-
bn.js@^5.0.0
|
1851
|
+
bn.js@^5.0.0:
|
1770
1852
|
version "5.2.0"
|
1771
1853
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
|
1772
1854
|
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
|
1773
1855
|
|
1856
|
+
bn.js@^5.2.1:
|
1857
|
+
version "5.2.1"
|
1858
|
+
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
|
1859
|
+
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
|
1860
|
+
|
1774
1861
|
body-parser@1.20.1:
|
1775
1862
|
version "1.20.1"
|
1776
1863
|
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
|
@@ -1873,7 +1960,7 @@ browserify-des@^1.0.0:
|
|
1873
1960
|
inherits "^2.0.1"
|
1874
1961
|
safe-buffer "^5.1.2"
|
1875
1962
|
|
1876
|
-
browserify-rsa@^4.0.0, browserify-rsa@^4.0
|
1963
|
+
browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
|
1877
1964
|
version "4.1.0"
|
1878
1965
|
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
|
1879
1966
|
integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
|
@@ -1882,19 +1969,19 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
|
|
1882
1969
|
randombytes "^2.0.1"
|
1883
1970
|
|
1884
1971
|
browserify-sign@^4.0.0:
|
1885
|
-
version "4.2.
|
1886
|
-
resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.
|
1887
|
-
integrity sha512
|
1972
|
+
version "4.2.2"
|
1973
|
+
resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e"
|
1974
|
+
integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==
|
1888
1975
|
dependencies:
|
1889
|
-
bn.js "^5.
|
1890
|
-
browserify-rsa "^4.0
|
1976
|
+
bn.js "^5.2.1"
|
1977
|
+
browserify-rsa "^4.1.0"
|
1891
1978
|
create-hash "^1.2.0"
|
1892
1979
|
create-hmac "^1.1.7"
|
1893
|
-
elliptic "^6.5.
|
1980
|
+
elliptic "^6.5.4"
|
1894
1981
|
inherits "^2.0.4"
|
1895
|
-
parse-asn1 "^5.1.
|
1896
|
-
readable-stream "^3.6.
|
1897
|
-
safe-buffer "^5.2.
|
1982
|
+
parse-asn1 "^5.1.6"
|
1983
|
+
readable-stream "^3.6.2"
|
1984
|
+
safe-buffer "^5.2.1"
|
1898
1985
|
|
1899
1986
|
browserify-zlib@^0.2.0:
|
1900
1987
|
version "0.2.0"
|
@@ -2866,7 +2953,7 @@ electron-to-chromium@^1.4.202:
|
|
2866
2953
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.244.tgz#ae9b56ed4ae2107e3a860dad80ed662c936e369e"
|
2867
2954
|
integrity sha512-E21saXLt2eTDaTxgUtiJtBUqanF9A32wZasAwDZ8gvrqXoxrBrbwtDCx7c/PQTLp81wj4X0OLDeoGQg7eMo3+w==
|
2868
2955
|
|
2869
|
-
elliptic@^6.5.3:
|
2956
|
+
elliptic@^6.5.3, elliptic@^6.5.4:
|
2870
2957
|
version "6.5.4"
|
2871
2958
|
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
|
2872
2959
|
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
|
@@ -4899,7 +4986,7 @@ parent-module@^1.0.0:
|
|
4899
4986
|
dependencies:
|
4900
4987
|
callsites "^3.0.0"
|
4901
4988
|
|
4902
|
-
parse-asn1@^5.0.0, parse-asn1@^5.1.
|
4989
|
+
parse-asn1@^5.0.0, parse-asn1@^5.1.6:
|
4903
4990
|
version "5.1.6"
|
4904
4991
|
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
|
4905
4992
|
integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
|
@@ -5896,6 +5983,15 @@ readable-stream@^3.0.6, readable-stream@^3.6.0:
|
|
5896
5983
|
string_decoder "^1.1.1"
|
5897
5984
|
util-deprecate "^1.0.1"
|
5898
5985
|
|
5986
|
+
readable-stream@^3.6.2:
|
5987
|
+
version "3.6.2"
|
5988
|
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
5989
|
+
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
5990
|
+
dependencies:
|
5991
|
+
inherits "^2.0.3"
|
5992
|
+
string_decoder "^1.1.1"
|
5993
|
+
util-deprecate "^1.0.1"
|
5994
|
+
|
5899
5995
|
readdirp@^2.2.1:
|
5900
5996
|
version "2.2.1"
|
5901
5997
|
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
@@ -6148,7 +6244,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
|
6148
6244
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
6149
6245
|
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
6150
6246
|
|
6151
|
-
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
|
6247
|
+
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
|
6152
6248
|
version "5.2.1"
|
6153
6249
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
6154
6250
|
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
@@ -6465,7 +6561,7 @@ source-map-url@^0.4.0:
|
|
6465
6561
|
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
|
6466
6562
|
integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
|
6467
6563
|
|
6468
|
-
source-map@^0.5.
|
6564
|
+
source-map@^0.5.6:
|
6469
6565
|
version "0.5.7"
|
6470
6566
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
6471
6567
|
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
@@ -5,10 +5,11 @@ require 'zlib'
|
|
5
5
|
|
6
6
|
module Wovnrb
|
7
7
|
class ApiTranslator
|
8
|
-
def initialize(store, headers, uuid)
|
8
|
+
def initialize(store, headers, uuid, response_status_code)
|
9
9
|
@store = store
|
10
10
|
@headers = headers
|
11
11
|
@uuid = uuid
|
12
|
+
@response_status_code = response_status_code
|
12
13
|
end
|
13
14
|
|
14
15
|
def translate(body)
|
@@ -113,8 +114,10 @@ module Wovnrb
|
|
113
114
|
'lang_param_name' => lang_param_name,
|
114
115
|
'translate_canonical_tag' => translate_canonical_tag,
|
115
116
|
'insert_hreflangs' => insert_hreflangs,
|
117
|
+
'hreflang_x_default_lang' => @store.settings['hreflang_x_default_lang'], # should not use fallback, so html swapper can calculate the default lang from js_data
|
116
118
|
'product' => 'WOVN.rb',
|
117
119
|
'version' => VERSION,
|
120
|
+
'page_status_code' => @response_status_code,
|
118
121
|
'body' => body
|
119
122
|
}
|
120
123
|
|
data/lib/wovnrb/lang.rb
CHANGED
@@ -102,7 +102,7 @@ module Wovnrb
|
|
102
102
|
custom_lang = LANG[custom_lang_aliases.invert[lang_name]]
|
103
103
|
return custom_lang[:code] if custom_lang
|
104
104
|
|
105
|
-
LANG.
|
105
|
+
LANG.each_value do |l|
|
106
106
|
return l[:code] if lang_name.casecmp(l[:name]).zero? || lang_name.casecmp(l[:en]).zero? || lang_name.casecmp(l[:code]).zero?
|
107
107
|
end
|
108
108
|
nil
|
@@ -243,8 +243,8 @@ module Wovnrb
|
|
243
243
|
|
244
244
|
def get_langs(values)
|
245
245
|
langs = Set.new
|
246
|
-
(values['text_vals'] || {}).merge(values['img_vals'] || {}).
|
247
|
-
index.
|
246
|
+
(values['text_vals'] || {}).merge(values['img_vals'] || {}).each_value do |index|
|
247
|
+
index.each_key do |l|
|
248
248
|
langs.add(l)
|
249
249
|
end
|
250
250
|
end
|
@@ -151,6 +151,24 @@ module Wovnrb
|
|
151
151
|
|
152
152
|
parent_node.add_child(insert_node.to_s)
|
153
153
|
end
|
154
|
+
|
155
|
+
unless existing_x_default_hreflang?
|
156
|
+
insert_node = Nokogiri::XML::Node.new('link', @dom)
|
157
|
+
insert_node['rel'] = 'alternate'
|
158
|
+
insert_node['hreflang'] = 'x-default'
|
159
|
+
insert_node['data-wovn'] = 'true'
|
160
|
+
x_default_lang_code = @store.hreflang_x_default_lang_or_default
|
161
|
+
insert_node['href'] = @headers.redirect_location(x_default_lang_code)
|
162
|
+
parent_node.add_child(insert_node.to_s)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def existing_x_default_hreflang?
|
167
|
+
@dom.xpath('//link').each do |node|
|
168
|
+
return true if node['rel'].casecmp('alternate').zero? && node['hreflang'] && node['hreflang'].casecmp('x-default').zero?
|
169
|
+
end
|
170
|
+
|
171
|
+
false
|
154
172
|
end
|
155
173
|
|
156
174
|
def translate_canonical_tag
|
data/lib/wovnrb/settings.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Wovnrb
|
2
2
|
class Settings < Hash
|
3
3
|
def initialize(*args, **kwargs)
|
4
|
-
super
|
4
|
+
super
|
5
5
|
@dynamic_settings = {}
|
6
6
|
end
|
7
7
|
|
@@ -9,7 +9,7 @@ module Wovnrb
|
|
9
9
|
return @dynamic_settings[key] if @dynamic_settings.key?(key)
|
10
10
|
return IgnoreGlobsWrapper.new(ignore_globs) if key == 'ignore_globs'
|
11
11
|
|
12
|
-
super
|
12
|
+
super
|
13
13
|
end
|
14
14
|
|
15
15
|
def ignore_globs
|
data/lib/wovnrb/store.rb
CHANGED
@@ -32,6 +32,7 @@ module Wovnrb
|
|
32
32
|
'test_mode' => false,
|
33
33
|
'test_url' => '',
|
34
34
|
'cache_megabytes' => nil,
|
35
|
+
'hreflang_x_default_lang' => nil,
|
35
36
|
'ttl_seconds' => nil,
|
36
37
|
'use_proxy' => false, # use env['HTTP_X_FORWARDED_HOST'] instead of env['HTTP_HOST'] and env['SERVER_NAME'] when this setting is true.
|
37
38
|
'custom_lang_aliases' => {},
|
@@ -64,7 +65,7 @@ module Wovnrb
|
|
64
65
|
#
|
65
66
|
# @return [Boolean] Returns true if the token is valid, and false if it is not
|
66
67
|
def valid_token?(token)
|
67
|
-
!token.nil? &&
|
68
|
+
!token.nil? && [5, 6].include?(token.length)
|
68
69
|
end
|
69
70
|
|
70
71
|
# Returns true or false based on whether the settings are valid or not, logs any invalid settings to ../error.log
|
@@ -141,6 +142,7 @@ module Wovnrb
|
|
141
142
|
end
|
142
143
|
|
143
144
|
@settings['default_lang'] = Lang.get_code(@settings['default_lang'])
|
145
|
+
|
144
146
|
if !@settings.has_key?('supported_langs')
|
145
147
|
@settings['supported_langs'] = [@settings['default_lang']]
|
146
148
|
end
|
@@ -172,12 +174,18 @@ module Wovnrb
|
|
172
174
|
@settings['api_timeout_seconds'] = 3.0
|
173
175
|
end
|
174
176
|
end
|
177
|
+
|
178
|
+
@settings['hreflang_x_default_lang'] = Lang.get_code(@settings['hreflang_x_default_lang'])
|
175
179
|
end
|
176
180
|
|
177
181
|
def custom_lang_aliases
|
178
182
|
@settings['custom_lang_aliases'] || {}
|
179
183
|
end
|
180
184
|
|
185
|
+
def hreflang_x_default_lang_or_default
|
186
|
+
@settings['hreflang_x_default_lang'] || default_lang
|
187
|
+
end
|
188
|
+
|
181
189
|
def default_lang
|
182
190
|
@settings['default_lang']
|
183
191
|
end
|
data/lib/wovnrb/version.rb
CHANGED
data/lib/wovnrb.rb
CHANGED
@@ -68,7 +68,7 @@ module Wovnrb
|
|
68
68
|
@store.settings.update_dynamic_settings!(request.params)
|
69
69
|
return output(headers, status, res_headers, body) if ignore_path?(headers.pathname)
|
70
70
|
|
71
|
-
body = switch_lang(headers, body) unless /^1|302/.match?(status.to_s)
|
71
|
+
body = switch_lang(headers, body, status) unless /^1|302/.match?(status.to_s)
|
72
72
|
|
73
73
|
content_length = 0
|
74
74
|
body.each { |b| content_length += b.respond_to?(:bytesize) ? b.bytesize : 0 }
|
@@ -77,7 +77,7 @@ module Wovnrb
|
|
77
77
|
output(headers, status, res_headers, body)
|
78
78
|
end
|
79
79
|
|
80
|
-
def switch_lang(headers, body)
|
80
|
+
def switch_lang(headers, body, response_status_code)
|
81
81
|
translated_body = []
|
82
82
|
|
83
83
|
# Must use `.each` for to support multiple-chunks in Sinatra
|
@@ -91,7 +91,7 @@ module Wovnrb
|
|
91
91
|
|
92
92
|
if needs_api?(html_body, headers)
|
93
93
|
converted_html, marker = html_converter.build_api_compatible_html
|
94
|
-
translated_content = ApiTranslator.new(@store, headers, WovnLogger.uuid).translate(converted_html)
|
94
|
+
translated_content = ApiTranslator.new(@store, headers, WovnLogger.uuid, response_status_code).translate(converted_html)
|
95
95
|
translated_body.push(marker.revert(translated_content))
|
96
96
|
else
|
97
97
|
string_body = html_converter.build if html_body.html?
|
@@ -10,29 +10,30 @@ module Wovnrb
|
|
10
10
|
|
11
11
|
def test_translate_falls_back_to_original_body_if_exception
|
12
12
|
Net::HTTP.any_instance.expects(:request).raises
|
13
|
-
assert_translation('test.html', 'test_translated.html', false,
|
13
|
+
assert_translation('test.html', 'test_translated.html', false, api_response: nil)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_translate_falls_back_to_original_body_if_api_error
|
17
|
-
assert_translation('test.html', 'test_translated.html', false,
|
17
|
+
assert_translation('test.html', 'test_translated.html', false, api_response: { encoding: 'text/json', status: 500 })
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_translate_continues_if_api_response_is_not_compressed
|
21
|
-
assert_translation('test.html', 'test_translated.html', true,
|
21
|
+
assert_translation('test.html', 'test_translated.html', true, api_response: { encoding: 'unknown', status: 200 }, compress_data: false)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_translate_continues_if_api_response_is_compressed
|
25
|
-
assert_translation('test.html', 'test_translated.html', true,
|
25
|
+
assert_translation('test.html', 'test_translated.html', true, api_response: { encoding: 'unknown', status: 200 })
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_translate_accepts_uncompressed_response_from_api_in_dev_mode
|
29
29
|
Wovnrb::Store.instance.update_settings('wovn_dev_mode' => true)
|
30
|
-
assert_translation('test.html', 'test_translated.html', true,
|
30
|
+
assert_translation('test.html', 'test_translated.html', true, api_response: { encoding: 'text/json', status: 200 }, compress_data: false)
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_translate_without_api_compression_sends_json
|
34
34
|
Wovnrb::Store.instance.update_settings('compress_api_requests' => false)
|
35
|
-
|
35
|
+
original_status_code = 201
|
36
|
+
sut, _store, _headers = create_sut(status: original_status_code)
|
36
37
|
html_body = 'foo'
|
37
38
|
|
38
39
|
stub_request(:post, %r{http://wovn\.global\.ssl\.fastly\.net/v0/translation\?cache_key=.*})
|
@@ -56,8 +57,10 @@ module Wovnrb
|
|
56
57
|
'lang_param_name' => 'lang',
|
57
58
|
'translate_canonical_tag' => true,
|
58
59
|
'insert_hreflangs' => true,
|
60
|
+
'hreflang_x_default_lang' => nil,
|
59
61
|
'product' => 'WOVN.rb',
|
60
62
|
'version' => VERSION,
|
63
|
+
'page_status_code' => original_status_code,
|
61
64
|
'body' => 'foo',
|
62
65
|
'custom_lang_aliases' => { 'ja' => 'Japanese' }.to_json
|
63
66
|
}.to_json,
|
@@ -80,7 +83,7 @@ module Wovnrb
|
|
80
83
|
Wovnrb.get_settings(settings),
|
81
84
|
UrlLanguageSwitcher.new(store)
|
82
85
|
)
|
83
|
-
api_translator = ApiTranslator.new(store, headers, REQUEST_UUID)
|
86
|
+
api_translator = ApiTranslator.new(store, headers, REQUEST_UUID, 200)
|
84
87
|
assert_equal(5.0, api_translator.send(:api_timeout))
|
85
88
|
end
|
86
89
|
|
@@ -102,16 +105,16 @@ module Wovnrb
|
|
102
105
|
Wovnrb.get_settings(settings),
|
103
106
|
UrlLanguageSwitcher.new(store)
|
104
107
|
)
|
105
|
-
api_translator = ApiTranslator.new(store, headers, REQUEST_UUID)
|
108
|
+
api_translator = ApiTranslator.new(store, headers, REQUEST_UUID, 200)
|
106
109
|
assert_equal(1.0, api_translator.send(:api_timeout))
|
107
110
|
end
|
108
111
|
|
109
112
|
private
|
110
113
|
|
111
|
-
def assert_translation(original_html_fixture, translated_html_fixture, success_expected,
|
114
|
+
def assert_translation(original_html_fixture, translated_html_fixture, success_expected, original_response: { status: 200 }, api_response: { encoding: 'gzip', status: 200 }, compress_data: true)
|
112
115
|
original_html = File.read("test/fixtures/html/#{original_html_fixture}")
|
113
116
|
translated_html = File.read("test/fixtures/html/#{translated_html_fixture}")
|
114
|
-
actual_translated_html = translate(original_html, translated_html,
|
117
|
+
actual_translated_html = translate(original_html, translated_html, original_response, api_response, compress_data: compress_data)
|
115
118
|
|
116
119
|
if success_expected
|
117
120
|
assert_equal(actual_translated_html, translated_html)
|
@@ -120,9 +123,9 @@ module Wovnrb
|
|
120
123
|
end
|
121
124
|
end
|
122
125
|
|
123
|
-
def translate(original_html, translated_html,
|
124
|
-
api_translator, store, _headers = create_sut
|
125
|
-
translation_request_stub = stub_translation_api_request(store, original_html, translated_html,
|
126
|
+
def translate(original_html, translated_html, original_response, api_response, compress_data: true)
|
127
|
+
api_translator, store, _headers = create_sut(original_response)
|
128
|
+
translation_request_stub = stub_translation_api_request(store, original_html, translated_html, original_response, api_response, compress_data: compress_data)
|
126
129
|
|
127
130
|
expected_api_timeout = store.settings['api_timeout_seconds']
|
128
131
|
assert_equal(expected_api_timeout, api_translator.send(:api_timeout))
|
@@ -131,7 +134,7 @@ module Wovnrb
|
|
131
134
|
actual_translated_html
|
132
135
|
end
|
133
136
|
|
134
|
-
def create_sut
|
137
|
+
def create_sut(response)
|
135
138
|
settings = {
|
136
139
|
'project_token' => '123456',
|
137
140
|
'custom_lang_aliases' => { 'ja' => 'Japanese' },
|
@@ -147,13 +150,18 @@ module Wovnrb
|
|
147
150
|
Wovnrb.get_settings(settings),
|
148
151
|
UrlLanguageSwitcher.new(store)
|
149
152
|
)
|
150
|
-
|
153
|
+
status = if response
|
154
|
+
response[:status]
|
155
|
+
else
|
156
|
+
200
|
157
|
+
end
|
158
|
+
api_translator = ApiTranslator.new(store, headers, REQUEST_UUID, status)
|
151
159
|
|
152
160
|
[api_translator, store, headers]
|
153
161
|
end
|
154
162
|
|
155
|
-
def stub_translation_api_request(store, original_html, translated_html,
|
156
|
-
if
|
163
|
+
def stub_translation_api_request(store, original_html, translated_html, original_response, api_response, compress_data: true)
|
164
|
+
if api_response
|
157
165
|
cache_key = generate_cache_key(store, original_html)
|
158
166
|
api_host = if store.dev_mode?
|
159
167
|
'dev-wovn.io:3001'
|
@@ -161,7 +169,8 @@ module Wovnrb
|
|
161
169
|
'wovn.global.ssl.fastly.net'
|
162
170
|
end
|
163
171
|
api_url = "http://#{api_host}/v0/translation?cache_key=#{cache_key}"
|
164
|
-
|
172
|
+
expected_data = generate_data(original_html, original_response[:status])
|
173
|
+
compressed_data = compress(expected_data)
|
165
174
|
headers = {
|
166
175
|
'Accept' => '*/*',
|
167
176
|
'Accept-Encoding' => 'gzip',
|
@@ -176,10 +185,10 @@ module Wovnrb
|
|
176
185
|
else
|
177
186
|
stub_response_json
|
178
187
|
end
|
179
|
-
response_headers = { 'Content-Encoding' =>
|
188
|
+
response_headers = { 'Content-Encoding' => api_response[:encoding] || 'gzip' }
|
180
189
|
stub_request(:post, api_url)
|
181
190
|
.with(body: compressed_data, headers: headers)
|
182
|
-
.to_return(status:
|
191
|
+
.to_return(status: api_response[:status] || 200, body: stub_response, headers: response_headers)
|
183
192
|
|
184
193
|
end
|
185
194
|
end
|
@@ -192,7 +201,7 @@ module Wovnrb
|
|
192
201
|
"(#{escaped_key})"
|
193
202
|
end
|
194
203
|
|
195
|
-
def generate_data(original_html)
|
204
|
+
def generate_data(original_html, expected_status)
|
196
205
|
data = {
|
197
206
|
'url' => 'http://wovn.io/test',
|
198
207
|
'token' => '123456',
|
@@ -201,8 +210,10 @@ module Wovnrb
|
|
201
210
|
'lang_param_name' => 'lang',
|
202
211
|
'translate_canonical_tag' => true,
|
203
212
|
'insert_hreflangs' => true,
|
213
|
+
'hreflang_x_default_lang' => nil,
|
204
214
|
'product' => 'WOVN.rb',
|
205
215
|
'version' => VERSION,
|
216
|
+
'page_status_code' => expected_status,
|
206
217
|
'body' => original_html,
|
207
218
|
'custom_lang_aliases' => '{"ja":"Japanese"}'
|
208
219
|
}
|
@@ -66,7 +66,7 @@ module Wovnrb
|
|
66
66
|
'english.foo.com' => 'en'
|
67
67
|
}
|
68
68
|
|
69
|
-
assert(hash_equals(expected, @custom_domain_langs.to_html_swapper_hash))
|
69
|
+
assert(hash_equals?(expected, @custom_domain_langs.to_html_swapper_hash))
|
70
70
|
end
|
71
71
|
|
72
72
|
private
|
@@ -75,7 +75,7 @@ module Wovnrb
|
|
75
75
|
custom_domain_lang.lang
|
76
76
|
end
|
77
77
|
|
78
|
-
def hash_equals(orig_hash, test_hash)
|
78
|
+
def hash_equals?(orig_hash, test_hash)
|
79
79
|
(orig_hash <=> test_hash) == 0
|
80
80
|
end
|
81
81
|
end
|
data/test/lib/lang_test.rb
CHANGED
@@ -6,7 +6,7 @@ module Wovnrb
|
|
6
6
|
converter = prepare_html_converter('<html><body><a class="test">hello</a></body></html>', supported_langs: %w[en vi])
|
7
7
|
converted_html, = converter.build_api_compatible_html
|
8
8
|
|
9
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a class=\"test\">hello</a></body></html>"
|
9
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a class=\"test\">hello</a></body></html>"
|
10
10
|
assert_equal(expected_html, converted_html)
|
11
11
|
end
|
12
12
|
|
@@ -19,7 +19,7 @@ module Wovnrb
|
|
19
19
|
converter = prepare_html_converter('<html><body><a class="test">hello</a></body></html>', settings)
|
20
20
|
converted_html, = converter.build_api_compatible_html
|
21
21
|
|
22
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=lang&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?lang=vi\"></head><body><a class=\"test\">hello</a></body></html>"
|
22
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=lang&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?lang=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a class=\"test\">hello</a></body></html>"
|
23
23
|
assert_equal(expected_html, converted_html)
|
24
24
|
end
|
25
25
|
|
@@ -28,7 +28,7 @@ module Wovnrb
|
|
28
28
|
converter = prepare_html_converter("<html><body><p>#{long_string}</p></body></html>", supported_langs: %w[en vi])
|
29
29
|
converted_html, = converter.build_api_compatible_html
|
30
30
|
|
31
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>#{long_string}</p></body></html>"
|
31
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><p>#{long_string}</p></body></html>"
|
32
32
|
assert_equal(expected_html, converted_html)
|
33
33
|
end
|
34
34
|
|
@@ -45,7 +45,7 @@ module Wovnrb
|
|
45
45
|
converter = prepare_html_converter(html, ignore_class: ['ignore-me'])
|
46
46
|
converted_html, = converter.build_api_compatible_html
|
47
47
|
|
48
|
-
expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
|
48
|
+
expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
|
49
49
|
assert_equal(expected_convert_html, converted_html)
|
50
50
|
end
|
51
51
|
|
@@ -62,7 +62,7 @@ module Wovnrb
|
|
62
62
|
converter = prepare_html_converter(html, ignore_class: [])
|
63
63
|
converted_html, = converter.build_api_compatible_html
|
64
64
|
|
65
|
-
expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
|
65
|
+
expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
|
66
66
|
assert_equal(expected_convert_html, converted_html)
|
67
67
|
end
|
68
68
|
|
@@ -81,7 +81,7 @@ module Wovnrb
|
|
81
81
|
|
82
82
|
expected_convert_html = [
|
83
83
|
'<html lang="en"><head>',
|
84
|
-
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>",
|
84
|
+
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body>",
|
85
85
|
'<input id="user-id" type="hidden" value="__wovn-backend-ignored-key-0">',
|
86
86
|
'<input id="password" type="hidden" value="__wovn-backend-ignored-key-1">',
|
87
87
|
'<input id="something" type="hidden" value="__wovn-backend-ignored-key-2">',
|
@@ -95,7 +95,7 @@ module Wovnrb
|
|
95
95
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
96
96
|
translated_html = converter.build
|
97
97
|
|
98
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
|
98
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a>hello</a></body></html>"
|
99
99
|
assert_equal(expected_html, translated_html)
|
100
100
|
end
|
101
101
|
|
@@ -103,7 +103,7 @@ module Wovnrb
|
|
103
103
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: [])
|
104
104
|
translated_html = converter.build
|
105
105
|
|
106
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body><a>hello</a></body></html>"
|
106
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a>hello</a></body></html>"
|
107
107
|
assert_equal(expected_html, translated_html)
|
108
108
|
end
|
109
109
|
|
@@ -111,7 +111,7 @@ module Wovnrb
|
|
111
111
|
converter = prepare_html_converter('<html><head><title>TITLE</title></head><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
112
112
|
translated_html = converter.build
|
113
113
|
|
114
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><title>TITLE</title><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
|
114
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><title>TITLE</title><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a>hello</a></body></html>"
|
115
115
|
assert_equal(expected_html, translated_html)
|
116
116
|
end
|
117
117
|
|
@@ -119,7 +119,7 @@ module Wovnrb
|
|
119
119
|
converter = prepare_html_converter('<html>hello<a>world</a></html>', supported_langs: [])
|
120
120
|
translated_html = converter.build
|
121
121
|
|
122
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body>hello<a>world</a></body></html>"
|
122
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body>hello<a>world</a></body></html>"
|
123
123
|
assert_equal(expected_html, translated_html)
|
124
124
|
end
|
125
125
|
|
@@ -135,7 +135,7 @@ module Wovnrb
|
|
135
135
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
136
136
|
translated_html = converter.build
|
137
137
|
|
138
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>hello<a>world</a></body></html>"
|
138
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body>hello<a>world</a></body></html>"
|
139
139
|
assert_equal(expected_html, translated_html)
|
140
140
|
end
|
141
141
|
|
@@ -152,7 +152,7 @@ module Wovnrb
|
|
152
152
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
153
153
|
translated_html = converter.build
|
154
154
|
|
155
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=vi&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body></body></html>"
|
155
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=vi&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
156
156
|
assert_equal(expected_html, translated_html)
|
157
157
|
end
|
158
158
|
|
@@ -169,7 +169,7 @@ module Wovnrb
|
|
169
169
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
170
170
|
translated_html = converter.build
|
171
171
|
|
172
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body></body></html>"
|
172
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
173
173
|
assert_equal(expected_html, translated_html)
|
174
174
|
end
|
175
175
|
|
@@ -186,7 +186,7 @@ module Wovnrb
|
|
186
186
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
187
187
|
translated_html = converter.build
|
188
188
|
|
189
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body></body></html>"
|
189
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
190
190
|
assert_equal(expected_html, translated_html)
|
191
191
|
end
|
192
192
|
|
@@ -204,7 +204,7 @@ module Wovnrb
|
|
204
204
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
205
205
|
translated_html = converter.build
|
206
206
|
|
207
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={"en":"english"}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/?wovn=english\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body></body></html>"
|
207
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={"en":"english"}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/?wovn=english\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
208
208
|
assert_equal(expected_html, translated_html)
|
209
209
|
end
|
210
210
|
|
@@ -221,7 +221,7 @@ module Wovnrb
|
|
221
221
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
222
222
|
translated_html = converter.build
|
223
223
|
|
224
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=vi&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body></body></html>"
|
224
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=vi&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"canonical\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
225
225
|
assert_equal(expected_html, translated_html)
|
226
226
|
end
|
227
227
|
|
@@ -237,7 +237,7 @@ module Wovnrb
|
|
237
237
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
238
238
|
translated_html = converter.build
|
239
239
|
|
240
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body>hello<a>world</a></body></html>"
|
240
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=path&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body>hello<a>world</a></body></html>"
|
241
241
|
assert_equal(expected_html, translated_html)
|
242
242
|
end
|
243
243
|
|
@@ -254,7 +254,7 @@ module Wovnrb
|
|
254
254
|
converter = HtmlConverter.new(dom, store, headers, url_lang_switcher)
|
255
255
|
translated_html = converter.build
|
256
256
|
|
257
|
-
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=custom_domain&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}&customDomainLangs={"my-site.com":"en","french.com/fr":"fr"}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://french.com/fr/\"></head><body><a>hello</a></body></html>"
|
257
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=custom_domain&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}&customDomainLangs={"my-site.com":"en","french.com/fr":"fr"}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://french.com/fr/\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body><a>hello</a></body></html>"
|
258
258
|
assert_equal(expected_html, translated_html)
|
259
259
|
end
|
260
260
|
|
@@ -279,7 +279,7 @@ module Wovnrb
|
|
279
279
|
translated_html = converter.build
|
280
280
|
dom = Helpers::NokogumboHelper.parse_html(translated_html)
|
281
281
|
href_langs = dom.css('link[rel="alternate"]')
|
282
|
-
assert_equal(
|
282
|
+
assert_equal(5, href_langs.length)
|
283
283
|
expected_href_langs = {
|
284
284
|
'en' =>
|
285
285
|
{
|
@@ -296,12 +296,21 @@ module Wovnrb
|
|
296
296
|
'vi' =>
|
297
297
|
{
|
298
298
|
'href' => 'http://my-site.com/?wovn=vi'
|
299
|
+
},
|
300
|
+
'x-default' =>
|
301
|
+
{
|
302
|
+
'href' => 'http://my-site.com/'
|
299
303
|
}
|
300
304
|
}
|
301
305
|
href_langs.each do |node|
|
302
306
|
assertions = expected_href_langs[node['hreflang']]
|
303
307
|
assert_not_nil(assertions)
|
304
308
|
assert_equal(assertions['href'], node['href'])
|
309
|
+
if node['hreflang'] == 'x-default'
|
310
|
+
assert_equal('true', node['data-wovn'])
|
311
|
+
else
|
312
|
+
assert_nil(node['data-wovn'])
|
313
|
+
end
|
305
314
|
end
|
306
315
|
end
|
307
316
|
|
@@ -492,6 +501,35 @@ module Wovnrb
|
|
492
501
|
assert_equal(expected_html, translated_html)
|
493
502
|
end
|
494
503
|
|
504
|
+
test 'Transform HTML - no x-default hreflang - no config - generates using default lang' do
|
505
|
+
settings = default_store_settings
|
506
|
+
converter = prepare_html_converter('<html><head></head></html>', settings)
|
507
|
+
translated_html = converter.build
|
508
|
+
|
509
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/\"></head><body></body></html>"
|
510
|
+
assert_equal(expected_html, translated_html)
|
511
|
+
end
|
512
|
+
|
513
|
+
test 'Transform HTML - no x-default hreflang - has config - generates using specified lang' do
|
514
|
+
settings = default_store_settings
|
515
|
+
settings['hreflang_x_default_lang'] = 'fr'
|
516
|
+
converter = prepare_html_converter('<html><head></head></html>', settings)
|
517
|
+
translated_html = converter.build
|
518
|
+
|
519
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"><link rel=\"alternate\" hreflang=\"x-default\" data-wovn=\"true\" href=\"http://my-site.com/?wovn=fr\"></head><body></body></html>"
|
520
|
+
assert_equal(expected_html, translated_html)
|
521
|
+
end
|
522
|
+
|
523
|
+
test 'Transform HTML - has x-default hreflang - does not modify' do
|
524
|
+
settings = default_store_settings
|
525
|
+
settings['hreflang_x_default_lang'] = 'fr'
|
526
|
+
converter = prepare_html_converter('<html><head><link rel="alternate" hreflang="X-Default" href="https://my-site.com/?from=customer"></head></html>', settings)
|
527
|
+
translated_html = converter.build
|
528
|
+
|
529
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&backend=true&currentLang=en&defaultLang=en&urlPattern=query&langCodeAliases={}&langParamName=wovn&version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"X-Default\" href=\"https://my-site.com/?from=customer\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body></body></html>"
|
530
|
+
assert_equal(expected_html, translated_html)
|
531
|
+
end
|
532
|
+
|
495
533
|
private
|
496
534
|
|
497
535
|
def prepare_html_converter(input_html, store_options = {})
|
data/test/lib/wovnrb_test.rb
CHANGED
@@ -395,7 +395,7 @@ HTML
|
|
395
395
|
assert_equal(unaffected_env != app_mock.env, affected)
|
396
396
|
end
|
397
397
|
|
398
|
-
def assert_switch_lang(original_lang, target_lang, body, expected_body, api_expected: true)
|
398
|
+
def assert_switch_lang(original_lang, target_lang, body, expected_body, api_expected: true, expected_status_code: 200)
|
399
399
|
subdomain = target_lang == original_lang ? '' : "#{target_lang}."
|
400
400
|
interceptor = Wovnrb::Interceptor.new(get_app)
|
401
401
|
|
@@ -408,7 +408,7 @@ HTML
|
|
408
408
|
mock_translation_api_response(apified_body, expected_body)
|
409
409
|
end
|
410
410
|
|
411
|
-
actual_bodies = interceptor.switch_lang(headers, [body])
|
411
|
+
actual_bodies = interceptor.switch_lang(headers, [body], expected_status_code)
|
412
412
|
|
413
413
|
assert_same_elements([expected_body], actual_bodies)
|
414
414
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wovnrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wovn Technologies, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -262,7 +262,7 @@ licenses:
|
|
262
262
|
- MIT
|
263
263
|
metadata:
|
264
264
|
rubygems_mfa_required: 'true'
|
265
|
-
post_install_message:
|
265
|
+
post_install_message:
|
266
266
|
rdoc_options: []
|
267
267
|
require_paths:
|
268
268
|
- lib
|
@@ -277,8 +277,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '0'
|
279
279
|
requirements: []
|
280
|
-
rubygems_version: 3.
|
281
|
-
signing_key:
|
280
|
+
rubygems_version: 3.5.11
|
281
|
+
signing_key:
|
282
282
|
specification_version: 4
|
283
283
|
summary: Gem for WOVN.io
|
284
284
|
test_files: []
|