wovnrb 2.2.2 → 3.0.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 +198 -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 -15
- data/lib/wovnrb/services/html_converter.rb +9 -10
- 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 +39 -17
- data/test/lib/store_test.rb +2 -1
- data/wovnrb.gemspec +1 -1
- metadata +7 -5
- 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
@@ -1,21 +1,7 @@
|
|
1
1
|
module Wovnrb
|
2
|
-
def self.middleware_inserted?(app, middleware)
|
3
|
-
app.middleware.send(:operations).each do |_, middlewares, _|
|
4
|
-
return true if middlewares.include?(middleware)
|
5
|
-
end
|
6
|
-
|
7
|
-
false
|
8
|
-
end
|
9
|
-
|
10
2
|
class Railtie < Rails::Railtie
|
11
3
|
initializer 'wovnrb.configure_rails_initialization' do |app|
|
12
|
-
|
13
|
-
if defined?(Rack::Deflater) && Wovnrb.middleware_inserted?(app, Rack::Deflater)
|
14
|
-
app.middleware.insert_after(Rack::Deflater, Wovnrb::Interceptor)
|
15
|
-
else
|
16
|
-
app.middleware.insert_before(0, Wovnrb::Interceptor)
|
17
|
-
end
|
18
|
-
end
|
4
|
+
app.middleware.insert_before(0, Wovnrb::Interceptor) if Rails.configuration.wovnrb[:install_middleware]
|
19
5
|
end
|
20
6
|
end
|
21
7
|
end
|
@@ -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
|
@@ -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
|
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
|
|
@@ -79,7 +80,7 @@ module Wovnrb
|
|
79
80
|
converted_html, = converter.build_api_compatible_html
|
80
81
|
|
81
82
|
expected_convert_html = [
|
82
|
-
'<html><head>',
|
83
|
+
'<html lang="en"><head>',
|
83
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>",
|
84
85
|
'<input id="user-id" type="hidden" value="__wovn-backend-ignored-key-0">',
|
85
86
|
'<input id="password" type="hidden" value="__wovn-backend-ignored-key-1">',
|
@@ -94,7 +95,7 @@ module Wovnrb
|
|
94
95
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
95
96
|
translated_html = converter.build
|
96
97
|
|
97
|
-
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>"
|
98
99
|
assert_equal(expected_html, translated_html)
|
99
100
|
end
|
100
101
|
|
@@ -102,7 +103,7 @@ module Wovnrb
|
|
102
103
|
converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: [])
|
103
104
|
translated_html = converter.build
|
104
105
|
|
105
|
-
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>"
|
106
107
|
assert_equal(expected_html, translated_html)
|
107
108
|
end
|
108
109
|
|
@@ -110,7 +111,7 @@ module Wovnrb
|
|
110
111
|
converter = prepare_html_converter('<html><head><title>TITLE</title></head><body><a>hello</a></body></html>', supported_langs: %w[en vi])
|
111
112
|
translated_html = converter.build
|
112
113
|
|
113
|
-
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>"
|
114
115
|
assert_equal(expected_html, translated_html)
|
115
116
|
end
|
116
117
|
|
@@ -118,7 +119,7 @@ module Wovnrb
|
|
118
119
|
converter = prepare_html_converter('<html>hello<a>world</a></html>', supported_langs: [])
|
119
120
|
translated_html = converter.build
|
120
121
|
|
121
|
-
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>"
|
122
123
|
assert_equal(expected_html, translated_html)
|
123
124
|
end
|
124
125
|
|
@@ -133,7 +134,7 @@ module Wovnrb
|
|
133
134
|
converter = HtmlConverter.new(dom, store, headers)
|
134
135
|
translated_html = converter.build
|
135
136
|
|
136
|
-
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>"
|
137
138
|
assert_equal(expected_html, translated_html)
|
138
139
|
end
|
139
140
|
|
@@ -148,16 +149,22 @@ module Wovnrb
|
|
148
149
|
converter = HtmlConverter.new(dom, store, headers)
|
149
150
|
translated_html = converter.build
|
150
151
|
|
151
|
-
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>"
|
152
153
|
assert_equal(expected_html, translated_html)
|
153
154
|
end
|
154
155
|
|
155
156
|
def test_replace_snippet
|
156
|
-
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>')
|
157
164
|
converter.send(:replace_snippet)
|
158
165
|
|
159
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>"
|
160
|
-
assert_equal(expected_html, converter.send(:html))
|
167
|
+
assert_equal(expected_html.gsub(/\s+/, ''), converter.send(:html).gsub(/\s+/, ''))
|
161
168
|
end
|
162
169
|
|
163
170
|
def test_replace_hreflangs
|
@@ -168,18 +175,33 @@ module Wovnrb
|
|
168
175
|
assert_equal(expected_html, converter.send(:html))
|
169
176
|
end
|
170
177
|
|
171
|
-
def
|
178
|
+
def test_inject_lang_html_tag_with_no_lang_in_html_tag
|
172
179
|
settings = default_store_settings
|
173
180
|
store = Wovnrb::Store.instance
|
174
181
|
store.update_settings(settings)
|
175
182
|
|
176
183
|
headers = Wovnrb::Headers.new(
|
177
|
-
Wovnrb.get_env('url' => 'http://my-site.com
|
184
|
+
Wovnrb.get_env('url' => 'http://my-site.com/'),
|
178
185
|
Wovnrb.get_settings(settings)
|
179
186
|
)
|
180
187
|
converter = HtmlConverter.new(get_dom('<html><body>hello</body></html>'), store, headers)
|
181
188
|
converter.send(:inject_lang_html_tag)
|
182
|
-
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>'
|
183
205
|
assert_equal(expected_html, converter.send(:html))
|
184
206
|
end
|
185
207
|
|