wovnrb 2.2.1 → 2.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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +2 -2
- data/README.en.md +174 -0
- data/README.ja.md +180 -0
- data/README.md +1 -0
- data/lib/wovnrb.rb +1 -1
- data/lib/wovnrb/api_translator.rb +1 -1
- data/lib/wovnrb/headers.rb +5 -27
- data/lib/wovnrb/lang.rb +77 -40
- data/lib/wovnrb/railtie.rb +1 -1
- data/lib/wovnrb/services/html_converter.rb +10 -11
- data/lib/wovnrb/services/html_replace_marker.rb +7 -1
- data/lib/wovnrb/store.rb +3 -3
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/headers_test.rb +29 -25
- data/test/lib/lang_test.rb +10 -40
- data/test/lib/services/html_converter_test.rb +49 -17
- data/test/lib/services/html_replace_marker_test.rb +81 -5
- data/test/lib/store_test.rb +2 -1
- data/test/lib/wovnrb_test.rb +28 -0
- data/wovnrb.gemspec +1 -1
- metadata +11 -8
- data/README.md +0 -182
data/lib/wovnrb/lang.rb
CHANGED
@@ -3,46 +3,83 @@ require 'addressable'
|
|
3
3
|
module Wovnrb
|
4
4
|
class Lang
|
5
5
|
LANG = {
|
6
|
-
|
7
|
-
'
|
8
|
-
'
|
9
|
-
'
|
10
|
-
'
|
11
|
-
'
|
12
|
-
'zh-CHS' => { name: '简体中文',
|
13
|
-
'zh-
|
14
|
-
'
|
15
|
-
'
|
16
|
-
'
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
20
|
-
'
|
21
|
-
'
|
22
|
-
'
|
23
|
-
'
|
24
|
-
'
|
25
|
-
'
|
26
|
-
'
|
27
|
-
'
|
28
|
-
'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'
|
34
|
-
'
|
35
|
-
'
|
36
|
-
'
|
37
|
-
'
|
38
|
-
'
|
39
|
-
'
|
40
|
-
'
|
41
|
-
'
|
42
|
-
'
|
43
|
-
'
|
44
|
-
'
|
45
|
-
'
|
6
|
+
'ar' => { name: 'العربية', code: 'ar', en: 'Arabic' },
|
7
|
+
'eu' => { name: 'Euskara', code: 'eu', en: 'Basque' },
|
8
|
+
'bn' => { name: 'বাংলা ভাষা', code: 'bn', en: 'Bengali' },
|
9
|
+
'bg' => { name: 'Български', code: 'bg', en: 'Bulgarian' },
|
10
|
+
'ca' => { name: 'Català', code: 'ca', en: 'Catalan' },
|
11
|
+
'zh-CN' => { name: '简体中文(中国)', code: 'zh-CN', en: 'Simp Chinese (China)' },
|
12
|
+
'zh-CHS' => { name: '简体中文', code: 'zh-CHS', en: 'Simp Chinese' },
|
13
|
+
'zh-Hant-HK' => { name: '繁體中文(香港)', code: 'zh-Hant-HK', en: 'Trad Chinese (Hong Kong)' },
|
14
|
+
'zh-Hant-TW' => { name: '繁體中文(台湾)', code: 'zh-Hant-TW', en: 'Trad Chinese (Taiwan)' },
|
15
|
+
'zh-CHT' => { name: '繁體中文', code: 'zh-CHT', en: 'Trad Chinese' },
|
16
|
+
'da' => { name: 'Dansk', code: 'da', en: 'Danish' },
|
17
|
+
'nl' => { name: 'Nederlands', code: 'nl', en: 'Dutch' },
|
18
|
+
'en' => { name: 'English', code: 'en', en: 'English' },
|
19
|
+
'en-AU' => { name: 'English (Australia)', code: 'en-AU', en: 'English (Australia)' },
|
20
|
+
'en-CA' => { name: 'English (Canada)', code: 'en-CA', en: 'English (Canada)' },
|
21
|
+
'en-IN' => { name: 'English (India)', code: 'en-IN', en: 'English (India)' },
|
22
|
+
'en-NZ' => { name: 'English (New Zealand)', code: 'en-NZ', en: 'English (New Zealand)' },
|
23
|
+
'en-ZA' => { name: 'English (South Africa)', code: 'en-ZA', en: 'English (South Africa)' },
|
24
|
+
'en-GB' => { name: 'English (United Kingdom)', code: 'en-GB', en: 'English (United Kingdom)' },
|
25
|
+
'en-SG' => { name: 'English (Singapore)', code: 'en-SG', en: 'English (Singapore)' },
|
26
|
+
'en-US' => { name: 'English (United States)', code: 'en-US', en: 'English (United States)' },
|
27
|
+
'fi' => { name: 'Suomi', code: 'fi', en: 'Finnish' },
|
28
|
+
'fr' => { name: 'Français', code: 'fr', en: 'French' },
|
29
|
+
'fr-CA' => { name: 'Français (Canada)', code: 'fr-CA', en: 'French (Canada)' },
|
30
|
+
'fr-FR' => { name: 'Français (France)', code: 'fr-FR', en: 'French (France)' },
|
31
|
+
'fr-CH' => { name: 'Français (Suisse)', code: 'fr-CH', en: 'French (Switzerland)' },
|
32
|
+
'gl' => { name: 'Galego', code: 'gl', en: 'Galician' },
|
33
|
+
'de' => { name: 'Deutsch', code: 'de', en: 'German' },
|
34
|
+
'de-AT' => { name: 'Deutsch (Österreich)', code: 'de-AT', en: 'German (Austria)' },
|
35
|
+
'de-DE' => { name: 'Deutsch (Deutschland)', code: 'de-DE', en: 'German (Germany)' },
|
36
|
+
'de-LI' => { name: 'Deutsch (Liechtenstien)', code: 'de-LI', en: 'German (Liechtenstien)' },
|
37
|
+
'de-CH' => { name: 'Deutsch (Schweiz)', code: 'de-CH', en: 'German (Switzerland)' },
|
38
|
+
'el' => { name: 'Ελληνικά', code: 'el', en: 'Greek' },
|
39
|
+
'he' => { name: 'עברית', code: 'he', en: 'Hebrew' },
|
40
|
+
'hu' => { name: 'Magyar', code: 'hu', en: 'Hungarian' },
|
41
|
+
'id' => { name: 'Bahasa Indonesia', code: 'id', en: 'Indonesian' },
|
42
|
+
'it' => { name: 'Italiano', code: 'it', en: 'Italian' },
|
43
|
+
'it-IT' => { name: 'Italiano (Italia)', code: 'it-IT', en: 'Italian (Italy)' },
|
44
|
+
'it-CH' => { name: 'Italiano (Svizzera)', code: 'it-CH', en: 'Italian (Switzerland)' },
|
45
|
+
'ja' => { name: '日本語', code: 'ja', en: 'Japanese' },
|
46
|
+
'ko' => { name: '한국어', code: 'ko', en: 'Korean' },
|
47
|
+
'lv' => { name: 'Latviešu', code: 'lv', en: 'Latvian' },
|
48
|
+
'ms' => { name: 'Bahasa Melayu', code: 'ms', en: 'Malay' },
|
49
|
+
'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
|
50
|
+
'ne' => { name: 'नेपाली भाषा', code: 'ne', en: 'Nepali' },
|
51
|
+
'no' => { name: 'Norsk', code: 'no', en: 'Norwegian' },
|
52
|
+
'fa' => { name: 'زبان_فارسی', code: 'fa', en: 'Persian' },
|
53
|
+
'pl' => { name: 'Polski', code: 'pl', en: 'Polish' },
|
54
|
+
'pt' => { name: 'Português', code: 'pt', en: 'Portuguese' },
|
55
|
+
'pt-BR' => { name: 'Português (Brasil)', code: 'pt-BR', en: 'Portuguese (Brazil)' },
|
56
|
+
'pt-PT' => { name: 'Português (Portugal)', code: 'pt-PT', en: 'Portuguese (Portugal)' },
|
57
|
+
'ru' => { name: 'Русский', code: 'ru', en: 'Russian' },
|
58
|
+
'es' => { name: 'Español', code: 'es', en: 'Spanish' },
|
59
|
+
'es-RA' => { name: 'Español (Argentina)', code: 'es-RA', en: 'Spanish (Argentina)' },
|
60
|
+
'es-CL' => { name: 'Español (Chile)', code: 'es-CL', en: 'Spanish (Chile)' },
|
61
|
+
'es-CO' => { name: 'Español (Colombia)', code: 'es-CO', en: 'Spanish (Colombia)' },
|
62
|
+
'es-CR' => { name: 'Español (Costa Rica)', code: 'es-CR', en: 'Spanish (Costa Rica)' },
|
63
|
+
'es-HN' => { name: 'Español (Honduras)', code: 'es-HN', en: 'Spanish (Honduras)' },
|
64
|
+
'es-419' => { name: 'Español (Latinoamérica)', code: 'es-419', en: 'Spanish (Latin America)' },
|
65
|
+
'es-MX' => { name: 'Español (México)', code: 'es-MX', en: 'Spanish (Mexico)' },
|
66
|
+
'es-PE' => { name: 'Español (Perú)', code: 'es-PE', en: 'Spanish (Peru)' },
|
67
|
+
'es-ES' => { name: 'Español (España)', code: 'es-ES', en: 'Spanish (Spain)' },
|
68
|
+
'es-US' => { name: 'Español (Estados Unidos)', code: 'es-US', en: 'Spanish (United States)' },
|
69
|
+
'es-UY' => { name: 'Español (Uruguay)', code: 'es-UY', en: 'Spanish (Uruguay)' },
|
70
|
+
'es-VE' => { name: 'Español (Venezuela)', code: 'es-VE', en: 'Spanish (Venezuela)' },
|
71
|
+
'sw' => { name: 'Kiswahili', code: 'sw', en: 'Swahili' },
|
72
|
+
'sv' => { name: 'Svensk', code: 'sv', en: 'Swedish' },
|
73
|
+
'tl' => { name: 'Tagalog', code: 'tl', en: 'Tagalog' },
|
74
|
+
'th' => { name: 'ภาษาไทย', code: 'th', en: 'Thai' },
|
75
|
+
'hi' => { name: 'हिन्दी', code: 'hi', en: 'Hindi' },
|
76
|
+
'tr' => { name: 'Türkçe', code: 'tr', en: 'Turkish' },
|
77
|
+
'uk' => { name: 'Українська', code: 'uk', en: 'Ukrainian' },
|
78
|
+
'ur' => { name: 'اردو', code: 'ur', en: 'Urdu' },
|
79
|
+
'vi' => { name: 'Tiếng Việt', code: 'vi', en: 'Vietnamese' },
|
80
|
+
'km' => { name: 'ភាសាខ្មែរ', code: 'km', en: 'Khmer' },
|
81
|
+
'ta' => { name: 'தமிழ்', code: 'ta', en: 'Tamil' },
|
82
|
+
'si' => { name: 'සිංහල', code: 'si', en: 'Sinhala' }
|
46
83
|
}.freeze
|
47
84
|
|
48
85
|
# Provides the ISO639-1 code for a given lang code.
|
data/lib/wovnrb/railtie.rb
CHANGED
@@ -43,6 +43,7 @@ module Wovnrb
|
|
43
43
|
|
44
44
|
insert_snippet(true)
|
45
45
|
insert_hreflang_tags
|
46
|
+
inject_lang_html_tag
|
46
47
|
|
47
48
|
html
|
48
49
|
end
|
@@ -69,7 +70,7 @@ module Wovnrb
|
|
69
70
|
return if original_text.nil?
|
70
71
|
return if original_text.include?(HtmlReplaceMarker::KEY_PREFIX)
|
71
72
|
|
72
|
-
node.set_attribute('value', marker.
|
73
|
+
node.set_attribute('value', marker.add_value(original_text))
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
@@ -84,7 +85,7 @@ module Wovnrb
|
|
84
85
|
end
|
85
86
|
|
86
87
|
def strip_wovn_ignore(node, marker)
|
87
|
-
put_replace_marker(node, marker) if node && node.get_attribute('wovn-ignore')
|
88
|
+
put_replace_marker(node, marker) if node && (node.get_attribute('wovn-ignore') || node.get_attribute('data-wovn-ignore'))
|
88
89
|
end
|
89
90
|
|
90
91
|
def put_replace_marker(node, marker)
|
@@ -108,15 +109,9 @@ module Wovnrb
|
|
108
109
|
def inject_lang_html_tag
|
109
110
|
root = @dom.at_css('html')
|
110
111
|
return unless root
|
112
|
+
return if root['lang']
|
111
113
|
|
112
|
-
|
113
|
-
default_lang = @store.default_lang
|
114
|
-
|
115
|
-
if current_lang != default_lang
|
116
|
-
root['lang'] = current_lang
|
117
|
-
else
|
118
|
-
root.delete('lang')
|
119
|
-
end
|
114
|
+
root['lang'] = @store.default_lang
|
120
115
|
end
|
121
116
|
|
122
117
|
def replace_hreflangs
|
@@ -147,10 +142,14 @@ module Wovnrb
|
|
147
142
|
# Remove wovn snippet code from dom
|
148
143
|
def strip_snippet
|
149
144
|
@dom.xpath('//script').each do |script_node|
|
150
|
-
script_node.remove if script_node['src'] && script_node['src']
|
145
|
+
script_node.remove if (script_node['src'] && widget_urls.any? { |url| script_node['src'].include? url }) || script_node['data-wovnio'].present?
|
151
146
|
end
|
152
147
|
end
|
153
148
|
|
149
|
+
def widget_urls
|
150
|
+
[@store.settings['api_url'] + '/widget', 'j.wovn.io', 'j.dev-wovn.io:3000']
|
151
|
+
end
|
152
|
+
|
154
153
|
def insert_snippet(adds_backend_error_mark = true)
|
155
154
|
parent_node = @dom.at_css('head') || @dom.at_css('body') || @dom.at_css('html')
|
156
155
|
return unless parent_node
|
@@ -15,6 +15,13 @@ module Wovnrb
|
|
15
15
|
key
|
16
16
|
end
|
17
17
|
|
18
|
+
def add_value(value)
|
19
|
+
key = generate_key
|
20
|
+
@mapped_values << [key, value]
|
21
|
+
|
22
|
+
key
|
23
|
+
end
|
24
|
+
|
18
25
|
def revert(marked_html)
|
19
26
|
i = @mapped_values.size
|
20
27
|
while i > 0
|
@@ -22,7 +29,6 @@ module Wovnrb
|
|
22
29
|
key, value = @mapped_values[i]
|
23
30
|
marked_html = marked_html.sub(key, value)
|
24
31
|
end
|
25
|
-
|
26
32
|
marked_html
|
27
33
|
end
|
28
34
|
|
data/lib/wovnrb/store.rb
CHANGED
@@ -23,7 +23,7 @@ module Wovnrb
|
|
23
23
|
'lang_param_name' => 'wovn',
|
24
24
|
'query' => [],
|
25
25
|
'ignore_class' => [],
|
26
|
-
'api_url' => 'https://wovn.global.ssl.fastly.net
|
26
|
+
'api_url' => 'https://wovn.global.ssl.fastly.net',
|
27
27
|
'api_timeout_seconds' => 1.0,
|
28
28
|
'default_lang' => 'en',
|
29
29
|
'supported_langs' => ['en'],
|
@@ -157,7 +157,7 @@ module Wovnrb
|
|
157
157
|
|
158
158
|
if @settings['wovn_dev_mode']
|
159
159
|
if @settings['api_url'] == self.class.default_settings['api_url']
|
160
|
-
@settings['api_url'] = 'http://dev-wovn.io:3001
|
160
|
+
@settings['api_url'] = 'http://dev-wovn.io:3001'
|
161
161
|
end
|
162
162
|
|
163
163
|
if @settings['api_timeout_seconds'] == self.class.default_settings['api_timeout_seconds']
|
@@ -185,7 +185,7 @@ module Wovnrb
|
|
185
185
|
|
186
186
|
def wovn_host
|
187
187
|
if @settings['wovn_dev_mode']
|
188
|
-
'dev-wovn.io
|
188
|
+
'dev-wovn.io'
|
189
189
|
else
|
190
190
|
'wovn.io'
|
191
191
|
end
|
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/headers_test.rb
CHANGED
@@ -74,24 +74,6 @@ module Wovnrb
|
|
74
74
|
assert_equal('localhost', env['SERVER_NAME'])
|
75
75
|
end
|
76
76
|
|
77
|
-
def test_initialize_without_query
|
78
|
-
env = Wovnrb.get_env
|
79
|
-
h = Wovnrb::Headers.new(env, Wovnrb.get_settings)
|
80
|
-
assert_equal('wovn.io/dashboard', h.redis_url)
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_initialize_with_query
|
84
|
-
env = Wovnrb.get_env
|
85
|
-
h = Wovnrb::Headers.new(env, Wovnrb.get_settings('query' => ['param']))
|
86
|
-
assert_equal('wovn.io/dashboard?param=val', h.redis_url)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_initialize_with_not_matching_query
|
90
|
-
env = Wovnrb.get_env
|
91
|
-
h = Wovnrb::Headers.new(env, Wovnrb.get_settings('query' => ['aaa']))
|
92
|
-
assert_equal('wovn.io/dashboard', h.redis_url)
|
93
|
-
end
|
94
|
-
|
95
77
|
def test_initialize_with_proto_header
|
96
78
|
env = Wovnrb.get_env('url' => 'http://page.com', 'HTTP_X_FORWARDED_PROTO' => 'https')
|
97
79
|
h = Wovnrb::Headers.new(env, Wovnrb.get_settings('query' => ['aaa']))
|
@@ -139,6 +121,28 @@ module Wovnrb
|
|
139
121
|
assert_equal('/test/', headers.pathname_with_trailing_slash_if_present)
|
140
122
|
end
|
141
123
|
|
124
|
+
def test_pathname_for_unencoded_url
|
125
|
+
h = Wovnrb::Headers.new(
|
126
|
+
Wovnrb.get_env('REQUEST_URI' => '/v0/download_html?url=https://wovn.io/'),
|
127
|
+
Store.instance.settings
|
128
|
+
)
|
129
|
+
|
130
|
+
assert_equal('/v0/download_html', h.pathname)
|
131
|
+
assert_equal('/v0/download_html', h.pathname_with_trailing_slash_if_present)
|
132
|
+
assert_equal('wovn.io/v0/download_html?url=https://wovn.io/', h.url)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_pathname_for_unencoded_url_with_http_scheme
|
136
|
+
h = Wovnrb::Headers.new(
|
137
|
+
Wovnrb.get_env('REQUEST_URI' => 'https://wovn.io/v0/download_html?url=https://wovn.io/'),
|
138
|
+
Store.instance.settings
|
139
|
+
)
|
140
|
+
|
141
|
+
assert_equal('/v0/download_html', h.pathname)
|
142
|
+
assert_equal('/v0/download_html', h.pathname_with_trailing_slash_if_present)
|
143
|
+
assert_equal('wovn.io/v0/download_html?url=https://wovn.io/', h.url)
|
144
|
+
end
|
145
|
+
|
142
146
|
#########################
|
143
147
|
# REDIRECT_LOCATION
|
144
148
|
#########################
|
@@ -6210,7 +6214,7 @@ module Wovnrb
|
|
6210
6214
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
6211
6215
|
|
6212
6216
|
keys = Wovnrb::Lang::LANG.keys
|
6213
|
-
assert_equal(
|
6217
|
+
assert_equal(77, keys.size)
|
6214
6218
|
|
6215
6219
|
for key in keys
|
6216
6220
|
uri_without_scheme = h.remove_lang("wovn.io/#{key}", key)
|
@@ -6224,7 +6228,7 @@ module Wovnrb
|
|
6224
6228
|
def test_remove_lang_path_with_nil_lang
|
6225
6229
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
6226
6230
|
keys = Wovnrb::Lang::LANG.keys
|
6227
|
-
assert_equal(
|
6231
|
+
assert_equal(77, keys.size)
|
6228
6232
|
|
6229
6233
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6230
6234
|
assert_equal('wovn.io', uri_without_scheme)
|
@@ -6247,7 +6251,7 @@ module Wovnrb
|
|
6247
6251
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
6248
6252
|
|
6249
6253
|
keys = Wovnrb::Lang::LANG.keys
|
6250
|
-
assert_equal(
|
6254
|
+
assert_equal(77, keys.size)
|
6251
6255
|
|
6252
6256
|
for key in keys
|
6253
6257
|
uri_without_scheme = h.remove_lang("wovn.io/?wovn=#{key}", key)
|
@@ -6262,7 +6266,7 @@ module Wovnrb
|
|
6262
6266
|
sut = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query', 'lang_param_name' => 'lang'))
|
6263
6267
|
|
6264
6268
|
keys = Wovnrb::Lang::LANG.keys
|
6265
|
-
assert_equal(
|
6269
|
+
assert_equal(77, keys.size)
|
6266
6270
|
|
6267
6271
|
for key in keys
|
6268
6272
|
uri_without_custom_lang_param = "wovn.io/?wovn=#{key}"
|
@@ -6280,7 +6284,7 @@ module Wovnrb
|
|
6280
6284
|
def test_remove_lang_query_with_nil_lang
|
6281
6285
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
6282
6286
|
keys = Wovnrb::Lang::LANG.keys
|
6283
|
-
assert_equal(
|
6287
|
+
assert_equal(77, keys.size)
|
6284
6288
|
|
6285
6289
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6286
6290
|
assert_equal('wovn.io', uri_without_scheme)
|
@@ -6303,7 +6307,7 @@ module Wovnrb
|
|
6303
6307
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
6304
6308
|
|
6305
6309
|
keys = Wovnrb::Lang::LANG.keys
|
6306
|
-
assert_equal(
|
6310
|
+
assert_equal(77, keys.size)
|
6307
6311
|
|
6308
6312
|
for key in keys
|
6309
6313
|
uri_without_scheme = h.remove_lang("#{key.downcase}.wovn.io/", key)
|
@@ -6317,7 +6321,7 @@ module Wovnrb
|
|
6317
6321
|
def test_remove_lang_subdomain_with_nil_lang
|
6318
6322
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
6319
6323
|
keys = Wovnrb::Lang::LANG.keys
|
6320
|
-
assert_equal(
|
6324
|
+
assert_equal(77, keys.size)
|
6321
6325
|
|
6322
6326
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6323
6327
|
assert_equal('wovn.io', uri_without_scheme)
|
data/test/lib/lang_test.rb
CHANGED
@@ -7,7 +7,7 @@ module Wovnrb
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_langs_length
|
10
|
-
assert_equal(
|
10
|
+
assert_equal(77, Wovnrb::Lang::LANG.length)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_keys_exist
|
@@ -20,45 +20,15 @@ module Wovnrb
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_iso_639_1_normalization
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
assert_equal('en', Lang.iso_639_1_normalization('en'))
|
33
|
-
assert_equal('fi', Lang.iso_639_1_normalization('fi'))
|
34
|
-
assert_equal('fr', Lang.iso_639_1_normalization('fr'))
|
35
|
-
assert_equal('gl', Lang.iso_639_1_normalization('gl'))
|
36
|
-
assert_equal('de', Lang.iso_639_1_normalization('de'))
|
37
|
-
assert_equal('el', Lang.iso_639_1_normalization('el'))
|
38
|
-
assert_equal('he', Lang.iso_639_1_normalization('he'))
|
39
|
-
assert_equal('hu', Lang.iso_639_1_normalization('hu'))
|
40
|
-
assert_equal('id', Lang.iso_639_1_normalization('id'))
|
41
|
-
assert_equal('it', Lang.iso_639_1_normalization('it'))
|
42
|
-
assert_equal('ja', Lang.iso_639_1_normalization('ja'))
|
43
|
-
assert_equal('ko', Lang.iso_639_1_normalization('ko'))
|
44
|
-
assert_equal('lv', Lang.iso_639_1_normalization('lv'))
|
45
|
-
assert_equal('ms', Lang.iso_639_1_normalization('ms'))
|
46
|
-
assert_equal('my', Lang.iso_639_1_normalization('my'))
|
47
|
-
assert_equal('ne', Lang.iso_639_1_normalization('ne'))
|
48
|
-
assert_equal('fa', Lang.iso_639_1_normalization('fa'))
|
49
|
-
assert_equal('no', Lang.iso_639_1_normalization('no'))
|
50
|
-
assert_equal('pl', Lang.iso_639_1_normalization('pl'))
|
51
|
-
assert_equal('pt', Lang.iso_639_1_normalization('pt'))
|
52
|
-
assert_equal('ru', Lang.iso_639_1_normalization('ru'))
|
53
|
-
assert_equal('es', Lang.iso_639_1_normalization('es'))
|
54
|
-
assert_equal('sw', Lang.iso_639_1_normalization('sw'))
|
55
|
-
assert_equal('sv', Lang.iso_639_1_normalization('sv'))
|
56
|
-
assert_equal('th', Lang.iso_639_1_normalization('th'))
|
57
|
-
assert_equal('hi', Lang.iso_639_1_normalization('hi'))
|
58
|
-
assert_equal('tr', Lang.iso_639_1_normalization('tr'))
|
59
|
-
assert_equal('uk', Lang.iso_639_1_normalization('uk'))
|
60
|
-
assert_equal('ur', Lang.iso_639_1_normalization('ur'))
|
61
|
-
assert_equal('vi', Lang.iso_639_1_normalization('vi'))
|
23
|
+
Wovnrb::Lang::LANG.each do |_, l|
|
24
|
+
if l[:code] == 'zh-CHS'
|
25
|
+
assert_equal('zh-Hans', Lang.iso_639_1_normalization('zh-CHS'))
|
26
|
+
elsif l[:code] == 'zh-CHT'
|
27
|
+
assert_equal('zh-Hant', Lang.iso_639_1_normalization('zh-CHT'))
|
28
|
+
else
|
29
|
+
assert_equal(l[:code], Lang.iso_639_1_normalization(l[:code]))
|
30
|
+
end
|
31
|
+
end
|
62
32
|
end
|
63
33
|
|
64
34
|
def test_get_code_with_valid_code
|
@@ -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><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
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><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
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><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>'
|
32
32
|
assert_equal(expected_html, converted_html)
|
33
33
|
end
|
34
34
|
|
@@ -36,6 +36,7 @@ module Wovnrb
|
|
36
36
|
html = [
|
37
37
|
'<html><body>',
|
38
38
|
'<p>Hello <span wovn-ignore>WOVN</span><p>',
|
39
|
+
'<p>Hello <span data-wovn-ignore>WOVN</span><p>',
|
39
40
|
'<div><span class="ignore-me">should be ignored</span></div>',
|
40
41
|
'<span>Have a nice day!</span>',
|
41
42
|
'</body></html>'
|
@@ -44,7 +45,7 @@ module Wovnrb
|
|
44
45
|
converter = prepare_html_converter(html, ignore_class: ['ignore-me'])
|
45
46
|
converted_html, = converter.build_api_compatible_html
|
46
47
|
|
47
|
-
expected_convert_html = "<html><head><script src=\"//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><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><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><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-
|
48
|
+
expected_convert_html = "<html lang=\"en\"><head><script src=\"//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><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><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
49
|
assert_equal(expected_convert_html, converted_html)
|
49
50
|
end
|
50
51
|
|
@@ -61,7 +62,7 @@ module Wovnrb
|
|
61
62
|
converter = prepare_html_converter(html, ignore_class: [])
|
62
63
|
converted_html, = converter.build_api_compatible_html
|
63
64
|
|
64
|
-
expected_convert_html = "<html><head><script src=\"//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><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><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><script src=\"//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><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><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
66
|
assert_equal(expected_convert_html, converted_html)
|
66
67
|
end
|
67
68
|
|
@@ -69,6 +70,8 @@ module Wovnrb
|
|
69
70
|
html = [
|
70
71
|
'<html><body>',
|
71
72
|
'<input id="user-id" type="hidden" value="secret-id">',
|
73
|
+
'<input id="password" type="hidden" value="secret-password">',
|
74
|
+
'<input id="something" type="hidden" value="">',
|
72
75
|
'<input id="name" type="text" value="wovn.io">',
|
73
76
|
'</body></html>'
|
74
77
|
].join
|
@@ -76,7 +79,15 @@ module Wovnrb
|
|
76
79
|
converter = prepare_html_converter(html, ignore_class: [])
|
77
80
|
converted_html, = converter.build_api_compatible_html
|
78
81
|
|
79
|
-
expected_convert_html =
|
82
|
+
expected_convert_html = [
|
83
|
+
'<html lang="en"><head>',
|
84
|
+
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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>",
|
85
|
+
'<input id="user-id" type="hidden" value="__wovn-backend-ignored-key-0">',
|
86
|
+
'<input id="password" type="hidden" value="__wovn-backend-ignored-key-1">',
|
87
|
+
'<input id="something" type="hidden" value="__wovn-backend-ignored-key-2">',
|
88
|
+
'<input id="name" type="text" value="wovn.io">',
|
89
|
+
'</body></html>'
|
90
|
+
].join
|
80
91
|
assert_equal(expected_convert_html, converted_html)
|
81
92
|
end
|
82
93
|
|
@@ -84,7 +95,7 @@ module Wovnrb
|
|
84
95
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
85
96
|
translated_html = converter.build
|
86
97
|
|
87
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
88
99
|
assert_equal(expected_html, translated_html)
|
89
100
|
end
|
90
101
|
|
@@ -92,7 +103,7 @@ module Wovnrb
|
|
92
103
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: [])
|
93
104
|
translated_html = converter.build
|
94
105
|
|
95
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
96
107
|
assert_equal(expected_html, translated_html)
|
97
108
|
end
|
98
109
|
|
@@ -100,7 +111,7 @@ module Wovnrb
|
|
100
111
|
converter = prepare_html_converter('<html><head><title>TITLE</title></head><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
101
112
|
translated_html = converter.build
|
102
113
|
|
103
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
104
115
|
assert_equal(expected_html, translated_html)
|
105
116
|
end
|
106
117
|
|
@@ -108,7 +119,7 @@ module Wovnrb
|
|
108
119
|
converter = prepare_html_converter('<html>hello<a>world</a></html>', supported_langs: [])
|
109
120
|
translated_html = converter.build
|
110
121
|
|
111
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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=\"//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>"
|
112
123
|
assert_equal(expected_html, translated_html)
|
113
124
|
end
|
114
125
|
|
@@ -123,7 +134,7 @@ module Wovnrb
|
|
123
134
|
converter = HtmlConverter.new(dom, store, headers)
|
124
135
|
translated_html = converter.build
|
125
136
|
|
126
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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>"
|
137
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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>"
|
127
138
|
assert_equal(expected_html, translated_html)
|
128
139
|
end
|
129
140
|
|
@@ -138,16 +149,22 @@ module Wovnrb
|
|
138
149
|
converter = HtmlConverter.new(dom, store, headers)
|
139
150
|
translated_html = converter.build
|
140
151
|
|
141
|
-
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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>"
|
152
|
+
expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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>"
|
142
153
|
assert_equal(expected_html, translated_html)
|
143
154
|
end
|
144
155
|
|
145
156
|
def test_replace_snippet
|
146
|
-
converter = prepare_html_converter('<html><head
|
157
|
+
converter = prepare_html_converter('<html><head>
|
158
|
+
<script src="/a"></script>
|
159
|
+
<script src="//j.wovn.io/1" async="true">
|
160
|
+
<script src="//j.wovn.io/1" data-wovnio="key=2wpv0n" async></script>
|
161
|
+
<script src="https//cdn.wovn.io/" data-wovnio="key=2wpv0n async></script>
|
162
|
+
<script src="https://wovn.global.ssl.fastly.net/widget/abcdef></script>
|
163
|
+
</head></html>')
|
147
164
|
converter.send(:replace_snippet)
|
148
165
|
|
149
166
|
expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//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><script src=\"/a\"></script></head><body></body></html>"
|
150
|
-
assert_equal(expected_html, converter.send(:html))
|
167
|
+
assert_equal(expected_html.gsub(/\s+/, ''), converter.send(:html).gsub(/\s+/, ''))
|
151
168
|
end
|
152
169
|
|
153
170
|
def test_replace_hreflangs
|
@@ -158,18 +175,33 @@ module Wovnrb
|
|
158
175
|
assert_equal(expected_html, converter.send(:html))
|
159
176
|
end
|
160
177
|
|
161
|
-
def
|
178
|
+
def test_inject_lang_html_tag_with_no_lang_in_html_tag
|
162
179
|
settings = default_store_settings
|
163
180
|
store = Wovnrb::Store.instance
|
164
181
|
store.update_settings(settings)
|
165
182
|
|
166
183
|
headers = Wovnrb::Headers.new(
|
167
|
-
Wovnrb.get_env('url' => 'http://my-site.com
|
184
|
+
Wovnrb.get_env('url' => 'http://my-site.com/'),
|
168
185
|
Wovnrb.get_settings(settings)
|
169
186
|
)
|
170
187
|
converter = HtmlConverter.new(get_dom('<html><body>hello</body></html>'), store, headers)
|
171
188
|
converter.send(:inject_lang_html_tag)
|
172
|
-
expected_html = '<html lang="
|
189
|
+
expected_html = '<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>hello</body></html>'
|
190
|
+
assert_equal(expected_html, converter.send(:html))
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_inject_lang_html_tag_with_lang_in_html_tag
|
194
|
+
settings = default_store_settings
|
195
|
+
store = Wovnrb::Store.instance
|
196
|
+
store.update_settings(settings)
|
197
|
+
|
198
|
+
headers = Wovnrb::Headers.new(
|
199
|
+
Wovnrb.get_env('url' => 'http://my-site.com/'),
|
200
|
+
Wovnrb.get_settings(settings)
|
201
|
+
)
|
202
|
+
converter = HtmlConverter.new(get_dom('<html lang="th"><body>hello</body></html>'), store, headers)
|
203
|
+
converter.send(:inject_lang_html_tag)
|
204
|
+
expected_html = '<html lang="th"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>hello</body></html>'
|
173
205
|
assert_equal(expected_html, converter.send(:html))
|
174
206
|
end
|
175
207
|
|