wovnrb 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +308 -0
- data/Rakefile +13 -14
- data/lib/wovnrb.rb +43 -98
- data/lib/wovnrb/api_translator.rb +143 -0
- data/lib/wovnrb/headers.rb +78 -92
- data/lib/wovnrb/helpers/nokogumbo_helper.rb +1 -1
- data/lib/wovnrb/lang.rb +93 -125
- data/lib/wovnrb/railtie.rb +5 -7
- data/lib/wovnrb/services/glob.rb +3 -3
- data/lib/wovnrb/services/html_converter.rb +192 -0
- data/lib/wovnrb/services/html_replace_marker.rb +38 -0
- data/lib/wovnrb/services/wovn_logger.rb +8 -4
- data/lib/wovnrb/settings.rb +5 -3
- data/lib/wovnrb/store.rb +35 -26
- data/lib/wovnrb/text_caches/cache_base.rb +3 -2
- data/lib/wovnrb/text_caches/memory_cache.rb +2 -2
- data/lib/wovnrb/version.rb +1 -1
- data/test/fixtures/html/test.html +8 -0
- data/test/fixtures/html/test_translated.html +8 -0
- data/test/lib/api_translator_test.rb +109 -0
- data/test/lib/headers_test.rb +84 -55
- data/test/lib/lang_test.rb +157 -357
- data/test/lib/services/glob_test.rb +1 -1
- data/test/lib/services/html_converter_test.rb +166 -0
- data/test/lib/services/html_replace_marker_test.rb +75 -0
- data/test/lib/services/wovn_logger_test.rb +6 -6
- data/test/lib/store_test.rb +25 -69
- data/test/lib/text_caches/cache_base_test.rb +1 -1
- data/test/lib/text_caches/memory_cache_test.rb +10 -11
- data/test/lib/wovnrb_test.rb +77 -310
- data/test/test_helper.rb +22 -32
- data/wovnrb.gemspec +35 -44
- metadata +86 -205
- data/ext/dom/Makefile +0 -239
- data/lib/wovnrb/api_data.rb +0 -59
- data/lib/wovnrb/html_replacers/image_replacer.rb +0 -69
- data/lib/wovnrb/html_replacers/input_replacer.rb +0 -38
- data/lib/wovnrb/html_replacers/link_replacer.rb +0 -78
- data/lib/wovnrb/html_replacers/meta_replacer.rb +0 -28
- data/lib/wovnrb/html_replacers/replacer_base.rb +0 -49
- data/lib/wovnrb/html_replacers/script_replacer.rb +0 -39
- data/lib/wovnrb/html_replacers/text_replacer.rb +0 -21
- data/lib/wovnrb/html_replacers/unified_values/dst_swapping_targets_creator.rb +0 -76
- data/lib/wovnrb/html_replacers/unified_values/element_category.rb +0 -242
- data/lib/wovnrb/html_replacers/unified_values/node_swapping_targets_creator.rb +0 -134
- data/lib/wovnrb/html_replacers/unified_values/text_replacer.rb +0 -35
- data/lib/wovnrb/html_replacers/unified_values/text_scraper.rb +0 -152
- data/lib/wovnrb/html_replacers/unified_values/values_stack.rb +0 -65
- data/lib/wovnrb/services/url.rb +0 -12
- data/lib/wovnrb/services/value_agent.rb +0 -9
- data/test/fixtures/unified_values/site_html/simple_actual.html +0 -96
- data/test/fixtures/unified_values/site_html/simple_expected.json +0 -251
- data/test/fixtures/unified_values/site_html/wovn.io_actual.html +0 -686
- data/test/fixtures/unified_values/site_html/wovn.io_expected.json +0 -543
- data/test/fixtures/unified_values/site_html/www.yahoo.co.jp_actual.html +0 -1024
- data/test/fixtures/unified_values/site_html/www.yahoo.co.jp_expected.json +0 -3345
- data/test/fixtures/unified_values/small_html/block_inside_inline_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/block_inside_inline_expected.json +0 -22
- data/test/fixtures/unified_values/small_html/br_tag_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/br_tag_expected.json +0 -12
- data/test/fixtures/unified_values/small_html/comment_tag_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/comment_tag_expected.json +0 -10
- data/test/fixtures/unified_values/small_html/complex_text_with_html_entity_actual.html +0 -7
- data/test/fixtures/unified_values/small_html/complex_text_with_html_entity_expected.json +0 -11
- data/test/fixtures/unified_values/small_html/deep_nested_block_actual.html +0 -14
- data/test/fixtures/unified_values/small_html/deep_nested_block_expected.json +0 -8
- data/test/fixtures/unified_values/small_html/deep_nested_inline_actual.html +0 -20
- data/test/fixtures/unified_values/small_html/deep_nested_inline_expected.json +0 -20
- data/test/fixtures/unified_values/small_html/empty_tag_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/empty_tag_expected.json +0 -12
- data/test/fixtures/unified_values/small_html/empty_text_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/empty_text_expected.json +0 -1
- data/test/fixtures/unified_values/small_html/ignore_tag_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/ignore_tag_expected.json +0 -16
- data/test/fixtures/unified_values/small_html/ignored_class_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/ignored_class_expected.json +0 -13
- data/test/fixtures/unified_values/small_html/img_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/img_expected.json +0 -23
- data/test/fixtures/unified_values/small_html/nested_and_complex_wovn_ignore_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/nested_and_complex_wovn_ignore_expected.json +0 -16
- data/test/fixtures/unified_values/small_html/nested_text_value_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/nested_text_value_expected.json +0 -12
- data/test/fixtures/unified_values/small_html/nested_text_value_mixed_plan_text_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/nested_text_value_mixed_plan_text_expected.json +0 -14
- data/test/fixtures/unified_values/small_html/option_tag_actual.html +0 -9
- data/test/fixtures/unified_values/small_html/option_tag_expected.json +0 -13
- data/test/fixtures/unified_values/small_html/text_different_inline_each_other_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/text_different_inline_each_other_expected.json +0 -22
- data/test/fixtures/unified_values/small_html/text_in_svg_actual.html +0 -9
- data/test/fixtures/unified_values/small_html/text_in_svg_expected.json +0 -8
- data/test/fixtures/unified_values/small_html/text_with_html_entity_actual.html +0 -6
- data/test/fixtures/unified_values/small_html/text_with_html_entity_expected.json +0 -8
- data/test/fixtures/unified_values/small_html/unknown_or_custom_tag_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/unknown_or_custom_tag_expected.json +0 -24
- data/test/fixtures/unified_values/small_html/unnecessay_top_end_tag_actual.html +0 -12
- data/test/fixtures/unified_values/small_html/unnecessay_top_end_tag_expected.json +0 -14
- data/test/fixtures/unified_values/small_html/wovn_ignore_actual.html +0 -10
- data/test/fixtures/unified_values/small_html/wovn_ignore_expected.json +0 -13
- data/test/lib/api_data_test.rb +0 -83
- data/test/lib/html_replacers/image_replacer_test.rb +0 -165
- data/test/lib/html_replacers/input_replacer_test.rb +0 -140
- data/test/lib/html_replacers/link_replacer_test.rb +0 -328
- data/test/lib/html_replacers/meta_replacer_test.rb +0 -157
- data/test/lib/html_replacers/replacer_base_test.rb +0 -128
- data/test/lib/html_replacers/script_replacer_test.rb +0 -139
- data/test/lib/html_replacers/text_replacer_test.rb +0 -99
- data/test/lib/html_replacers/unified_values/dst_swapping_targets_creator_test.rb +0 -137
- data/test/lib/html_replacers/unified_values/element_category_test.rb +0 -49
- data/test/lib/html_replacers/unified_values/node_swapping_targets_creator_test.rb +0 -137
- data/test/lib/html_replacers/unified_values/text_replacer_test.rb +0 -270
- data/test/lib/html_replacers/unified_values/text_scraper_test.rb +0 -121
- data/test/lib/html_replacers/unified_values/values_stack_test.rb +0 -122
- data/test/lib/services/url_test.rb +0 -9
- data/test/lib/services/value_agent_test.rb +0 -32
- data/test/services/url_test.rb +0 -163
- data/values/values +0 -1
data/test/lib/lang_test.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: UTF-8 -*-
|
2
1
|
require 'test_helper'
|
3
2
|
|
4
3
|
module Wovnrb
|
@@ -13,53 +12,53 @@ module Wovnrb
|
|
13
12
|
|
14
13
|
def test_keys_exist
|
15
14
|
Wovnrb::Lang::LANG.each do |k, l|
|
16
|
-
assert(l.
|
17
|
-
assert(l.
|
18
|
-
assert(l.
|
15
|
+
assert(l.key?(:name))
|
16
|
+
assert(l.key?(:code))
|
17
|
+
assert(l.key?(:en))
|
19
18
|
assert_equal(k, l[:code])
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
23
22
|
def test_iso_639_1_normalization
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
23
|
+
assert_equal('ar', Lang.iso_639_1_normalization('ar'))
|
24
|
+
assert_equal('eu', Lang.iso_639_1_normalization('eu'))
|
25
|
+
assert_equal('bn', Lang.iso_639_1_normalization('bn'))
|
26
|
+
assert_equal('bg', Lang.iso_639_1_normalization('bg'))
|
27
|
+
assert_equal('ca', Lang.iso_639_1_normalization('ca'))
|
28
|
+
assert_equal('zh-Hans', Lang.iso_639_1_normalization('zh-CHS'))
|
29
|
+
assert_equal('zh-Hant', Lang.iso_639_1_normalization('zh-CHT'))
|
30
|
+
assert_equal('da', Lang.iso_639_1_normalization('da'))
|
31
|
+
assert_equal('nl', Lang.iso_639_1_normalization('nl'))
|
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'))
|
63
62
|
end
|
64
63
|
|
65
64
|
def test_get_code_with_valid_code
|
@@ -93,128 +92,129 @@ module Wovnrb
|
|
93
92
|
def test_add_lang_code
|
94
93
|
lang = Lang.new('zh-cht')
|
95
94
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
96
|
-
assert_equal(
|
95
|
+
assert_equal('http://www.facebook.com', lang.add_lang_code('http://www.facebook.com', 'subdomain', h))
|
97
96
|
end
|
98
97
|
|
99
98
|
def test_add_lang_code_relative_slash_href_url_with_path
|
100
99
|
lang = Lang.new('fr')
|
101
100
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
102
|
-
assert_equal(
|
101
|
+
assert_equal('http://fr.wovn.io/topics/50', lang.add_lang_code('/topics/50', 'subdomain', h))
|
103
102
|
end
|
104
103
|
|
105
104
|
def test_add_lang_code_relative_dot_href_url_with_path
|
106
105
|
lang = Lang.new('fr')
|
107
106
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
108
|
-
assert_equal(
|
107
|
+
assert_equal('http://fr.wovn.io/topics/44/topics/50', lang.add_lang_code('./topics/50', 'subdomain', h))
|
109
108
|
end
|
110
109
|
|
111
110
|
def test_add_lang_code_relative_two_dots_href_url_with_path
|
112
111
|
lang = Lang.new('fr')
|
113
112
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
114
|
-
assert_equal(
|
113
|
+
assert_equal('http://fr.wovn.io/topics/50', lang.add_lang_code('../topics/50', 'subdomain', h))
|
115
114
|
end
|
116
115
|
|
117
116
|
def test_add_lang_code_trad_chinese
|
118
117
|
lang = Lang.new('zh-cht')
|
119
118
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
120
|
-
assert_equal(
|
119
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('http://wovn.io/topics/31', 'subdomain', h))
|
121
120
|
end
|
122
121
|
|
123
122
|
def test_add_lang_code_trad_chinese_2
|
124
123
|
lang = Lang.new('zh-cht')
|
125
124
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
126
|
-
assert_equal(
|
125
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('/topics/31', 'subdomain', h))
|
127
126
|
end
|
128
127
|
|
129
128
|
def test_add_lang_code_trad_chinese_lang_in_link_already
|
130
129
|
lang = Lang.new('zh-cht')
|
131
130
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
132
|
-
assert_equal(
|
131
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('http://zh-cht.wovn.io/topics/31', 'subdomain', h))
|
133
132
|
end
|
134
133
|
|
135
134
|
def test_add_lang_code_no_protocol
|
136
135
|
lang = Lang.new('zh-cht')
|
137
136
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'https://zh-cht.google.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
138
|
-
assert_equal(
|
137
|
+
assert_equal('//zh-cht.google.com', lang.add_lang_code('//google.com', 'subdomain', h))
|
139
138
|
end
|
140
139
|
|
141
140
|
def test_add_lang_code_no_protocol_2
|
142
141
|
lang = Lang.new('zh-cht')
|
143
142
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'https://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
144
|
-
assert_equal(
|
143
|
+
assert_equal('//google.com', lang.add_lang_code('//google.com', 'subdomain', h))
|
145
144
|
end
|
146
145
|
|
147
146
|
def test_add_lang_code_invalid_url
|
148
147
|
lang = Lang.new('zh-cht')
|
149
148
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
150
|
-
assert_equal(
|
149
|
+
assert_equal('http://www.facebook.com/sharer.php?u=http://wovn.io/topics/50&amp;t=Gourmet Tofu World: Vegetarian-Friendly Japanese Food is Here!', lang.add_lang_code('http://www.facebook.com/sharer.php?u=http://wovn.io/topics/50&amp;t=Gourmet Tofu World: Vegetarian-Friendly Japanese Food is Here!', 'subdomain', h))
|
151
150
|
end
|
152
151
|
|
153
152
|
def test_add_lang_code_path_only_with_slash
|
154
153
|
lang = Lang.new('zh-cht')
|
155
154
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
156
|
-
assert_equal(
|
155
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('/topics/31', 'subdomain', h))
|
157
156
|
end
|
158
157
|
|
159
158
|
def test_add_lang_code_path_only_no_slash
|
160
159
|
lang = Lang.new('zh-cht')
|
161
160
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
162
|
-
assert_equal(
|
161
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('topics/31', 'subdomain', h))
|
163
162
|
end
|
164
163
|
|
165
164
|
def test_add_lang_code_path_explicit_page_no_slash
|
166
165
|
lang = Lang.new('zh-cht')
|
167
166
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
168
|
-
assert_equal(
|
167
|
+
assert_equal('http://zh-cht.wovn.io/topics/31.html', lang.add_lang_code('topics/31.html', 'subdomain', h))
|
169
168
|
end
|
170
169
|
|
171
170
|
def test_add_lang_code_path_explicit_page_with_slash
|
172
171
|
lang = Lang.new('zh-cht')
|
173
172
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
174
|
-
assert_equal(
|
173
|
+
assert_equal('http://zh-cht.wovn.io/topics/31.html', lang.add_lang_code('/topics/31.html', 'subdomain', h))
|
175
174
|
end
|
176
175
|
|
177
176
|
def test_add_lang_code_no_protocol_with_path_explicit_page
|
178
177
|
lang = Lang.new('zh-cht')
|
179
178
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
180
|
-
assert_equal(
|
179
|
+
assert_equal('//www.google.com/topics/31.php', lang.add_lang_code('//www.google.com/topics/31.php', 'subdomain', h))
|
181
180
|
end
|
182
181
|
|
183
182
|
def test_add_lang_code_protocol_with_path_explicit_page
|
184
183
|
lang = Lang.new('zh-cht')
|
185
184
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
186
|
-
assert_equal(
|
185
|
+
assert_equal('http://www.google.com/topics/31.php', lang.add_lang_code('http://www.google.com/topics/31.php', 'subdomain', h))
|
187
186
|
end
|
188
187
|
|
189
188
|
def test_add_lang_code_relative_path_double_period
|
190
189
|
lang = Lang.new('zh-cht')
|
191
190
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
192
|
-
assert_equal(
|
191
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('../topics/31', 'subdomain', h))
|
193
192
|
end
|
194
193
|
|
195
194
|
def test_add_lang_code_relative_path_single_period
|
196
195
|
lang = Lang.new('zh-cht')
|
197
196
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
198
|
-
assert_equal(
|
197
|
+
assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('./topics/31', 'subdomain', h))
|
199
198
|
end
|
200
199
|
|
201
200
|
def test_add_lang_code_empty_href
|
202
201
|
lang = Lang.new('zh-cht')
|
203
202
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
204
|
-
assert_equal(
|
203
|
+
assert_equal('', lang.add_lang_code('', 'subdomain', h))
|
205
204
|
end
|
206
205
|
|
207
206
|
def test_add_lang_code_hash_href
|
208
207
|
lang = Lang.new('zh-cht')
|
209
208
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
210
|
-
assert_equal(
|
209
|
+
assert_equal('#', lang.add_lang_code('#', 'subdomain', h))
|
211
210
|
end
|
212
211
|
|
213
212
|
def test_add_lang_code_nil_href
|
214
213
|
lang = Lang.new('en')
|
215
214
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings)
|
216
|
-
assert_nil(lang.add_lang_code(nil,'path', h))
|
215
|
+
assert_nil(lang.add_lang_code(nil, 'path', h))
|
217
216
|
end
|
217
|
+
|
218
218
|
def test_add_lang_code_absolute_different_host
|
219
219
|
lang = Lang.new('fr')
|
220
220
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
|
@@ -329,70 +329,70 @@ module Wovnrb
|
|
329
329
|
assert_equal('/fr/index.html', lang.add_lang_code('index.html', 'path', headers))
|
330
330
|
end
|
331
331
|
|
332
|
-
def generate_body(param =
|
333
|
-
case param
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
"
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
"
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
"
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
<body><h1>Mr. Belvedere Fan Club</h1>
|
382
|
-
<div><p>Hello</p></div>
|
383
|
-
<img src=\"http://example.com/photo.png\" alt=\"Hello\">
|
384
|
-
</body></html>"
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
"
|
394
|
-
|
395
|
-
|
332
|
+
def generate_body(param = '')
|
333
|
+
body = case param
|
334
|
+
when 'ignore_parent'
|
335
|
+
"<html><body><h1>Mr. Belvedere Fan Club</h1>
|
336
|
+
<div wovn-ignore><p>Hello</p></div>
|
337
|
+
</body></html>"
|
338
|
+
when 'ignore_everything'
|
339
|
+
"<html><body wovn-ignore><h1>Mr. Belvedere Fan Club</h1>
|
340
|
+
<div><p>Hello</p></div>
|
341
|
+
</body></html>"
|
342
|
+
when 'ignore_parent_translated_in_japanese'
|
343
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1><!--wovn-src:Mr. Belvedere Fan Club-->ベルベデアさんファンクラブ</h1>
|
344
|
+
<div wovn-ignore=\"\"><p>Hello</p></div>
|
345
|
+
</body></html>
|
346
|
+
"
|
347
|
+
when 'translated_in_japanese'
|
348
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body><h1><!--wovn-src:Mr. Belvedere Fan Club-->ベルベデアさんファンクラブ</h1>
|
349
|
+
<div><p><!--wovn-src:Hello-->こんにちは</p></div>
|
350
|
+
</body></html>
|
351
|
+
"
|
352
|
+
when 'ignore_everything_translated'
|
353
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body wovn-ignore=\"\"><h1>Mr. Belvedere Fan Club</h1>
|
354
|
+
<div><p>Hello</p></div>
|
355
|
+
</body></html>
|
356
|
+
"
|
357
|
+
when 'empty'
|
358
|
+
'<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore><p>Hello</p></div></body></html>'
|
359
|
+
when 'empty_single_quote'
|
360
|
+
"<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=''><p>Hello</p></div></body></html>"
|
361
|
+
when 'empty_double_quote'
|
362
|
+
'<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=''><p>Hello</p></div></body></html>'
|
363
|
+
when 'value_single_quote'
|
364
|
+
"<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore='value'><p>Hello</p></div></body></html>"
|
365
|
+
when 'value_double_quote'
|
366
|
+
'<html><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore="value"><p>Hello</p></div></body></html>'
|
367
|
+
when 'empty_translated'
|
368
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"\"><p>Hello</p></div></body></html>\n"
|
369
|
+
when 'empty_single_quote_translated'
|
370
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"\"><p>Hello</p></div></body></html>\n"
|
371
|
+
when 'empty_double_quote_translated'
|
372
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"\"><p>Hello</p></div></body></html>\n"
|
373
|
+
when 'value_single_quote_translated'
|
374
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"value\"><p>Hello</p></div></body></html>\n"
|
375
|
+
when 'value_double_quote_translated'
|
376
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.ignore-page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://ignore-page.com/\"></head><body><h1>Mr.BelvedereFanClub</h1><div wovn-ignore=\"value\"><p>Hello</p></div></body></html>\n"
|
377
|
+
when 'meta_img_alt_tags_translated'
|
378
|
+
"<html lang=\"ja\"><head><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta name=\"description\" content=\"こんにちは\">\n<meta name=\"title\" content=\"こんにちは\">\n<meta property=\"og:title\" content=\"こんにちは\">\n<meta property=\"og:description\" content=\"こんにちは\">\n<meta property=\"twitter:title\" content=\"こんにちは\">\n<meta property=\"twitter:description\" content=\"こんにちは\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head>\n<body><h1><!--wovn-src:Mr. Belvedere Fan Club-->ベルベデアさんファンクラブ</h1>\n<div><p><!--wovn-src:Hello-->こんにちは</p></div>\n<!--wovn-src:Hello--><img src=\"http://example.com/photo.png\" alt=\"こんにちは\">\n</body></html>\n"
|
379
|
+
when 'meta_img_alt_tags'
|
380
|
+
"<html><head><meta name =\"description\" content=\"Hello\">\n<meta name=\"title\" content=\"Hello\">\n<meta property=\"og:title\" content=\"Hello\">\n<meta property=\"og:description\" content=\"Hello\">\n<meta property=\"twitter:title\" content=\"Hello\">\n<meta property=\"twitter:description\" content=\"Hello\"></head>
|
381
|
+
<body><h1>Mr. Belvedere Fan Club</h1>
|
382
|
+
<div><p>Hello</p></div>
|
383
|
+
<img src=\"http://example.com/photo.png\" alt=\"Hello\">
|
384
|
+
</body></html>"
|
385
|
+
when 'a_href_javascript'
|
386
|
+
"<html><body><h1>Mr. Belvedere Fan Club</h1>
|
387
|
+
<div><p><a href=\"javascript:void(0)\">Hello</a></p></div>
|
388
|
+
</body></html>"
|
389
|
+
when 'a_href_javascript_translated'
|
390
|
+
"<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"ja\" href=\"http://ja.page.com/\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body><h1><!--wovn-src:Mr. Belvedere Fan Club-->ベルベデアさんファンクラブ</h1>
|
391
|
+
<div><p><a href=\"javascript:void(0)\"><!--wovn-src:Hello-->こんにちは</a></p></div>
|
392
|
+
</body></html>
|
393
|
+
"
|
394
|
+
when 'unified_values'
|
395
|
+
<<-HTML
|
396
396
|
<html><body>
|
397
397
|
<div>
|
398
398
|
a <span>b</span> c
|
@@ -404,10 +404,10 @@ module Wovnrb
|
|
404
404
|
<span> b </span>c
|
405
405
|
</div>
|
406
406
|
</body></html>
|
407
|
-
|
407
|
+
HTML
|
408
408
|
|
409
|
-
|
410
|
-
|
409
|
+
when 'unified_values_ja'
|
410
|
+
<<-HTML
|
411
411
|
<html lang=\"ja\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body>
|
412
412
|
<div><!--wovn-src:
|
413
413
|
a -->\u3042<span><!--wovn-src:b-->\u3044</span><!--wovn-src: c
|
@@ -420,258 +420,58 @@ module Wovnrb
|
|
420
420
|
-->\u200B</div>
|
421
421
|
|
422
422
|
</body></html>
|
423
|
-
|
423
|
+
HTML
|
424
424
|
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
425
|
+
else # "" case
|
426
|
+
"<html><body><h1>Mr. Belvedere Fan Club</h1>
|
427
|
+
<div><p>Hello</p></div>
|
428
|
+
</body></html>"
|
429
|
+
end
|
430
430
|
|
431
|
-
|
431
|
+
body
|
432
432
|
end
|
433
433
|
|
434
|
-
def generate_dom(param='')
|
434
|
+
def generate_dom(param = '')
|
435
435
|
Wovnrb.to_dom(generate_body(param))
|
436
436
|
end
|
437
437
|
|
438
438
|
def generate_values
|
439
439
|
values = {}
|
440
440
|
values['text_vals'] = {
|
441
|
-
'Hello' => {'ja' => [{'data' => 'こんにちは'}]},
|
442
|
-
'Mr. Belvedere Fan Club' => {'ja' => [{'data' => 'ベルベデアさんファンクラブ'}]}
|
441
|
+
'Hello' => { 'ja' => [{ 'data' => 'こんにちは' }] },
|
442
|
+
'Mr. Belvedere Fan Club' => { 'ja' => [{ 'data' => 'ベルベデアさんファンクラブ' }] }
|
443
443
|
}
|
444
|
-
|
444
|
+
values
|
445
445
|
end
|
446
446
|
|
447
447
|
def generate_unified_values
|
448
448
|
{
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
449
|
+
'html_text_vals' => {
|
450
|
+
'a<span>b</span>c' =>
|
451
|
+
{ 'ja' =>
|
452
|
+
[{ 'data' => 'あ<span>い</span>う' }] },
|
453
|
+
'a<span>b</span>' =>
|
454
|
+
{ 'ja' =>
|
455
|
+
[{ 'data' => '<span>い</span>う' }] },
|
456
|
+
'<span>b</span>c' =>
|
457
|
+
{ 'ja' =>
|
458
|
+
[{ 'data' => 'あ<span>い</span>' }] }
|
459
|
+
|
460
|
+
}
|
461
461
|
}
|
462
462
|
end
|
463
463
|
|
464
|
-
def test_switch_dom_lang_for_simplified_chinese
|
465
|
-
lang = Lang.new('zh-CHS')
|
466
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
467
|
-
dom = generate_dom
|
468
|
-
values = generate_values
|
469
|
-
values['text_vals']['Simplified Chinese'] = {'zh-CHS' => [{data: 'test'}]}
|
470
|
-
url = h.url
|
471
|
-
|
472
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
473
|
-
assert(/hreflang="zh-Hans"/ =~ swapped_body)
|
474
|
-
assert(!(/hreflang="zh-CHS"/ =~ swapped_body))
|
475
|
-
assert(/html lang="zh-Hans"/ =~ swapped_body)
|
476
|
-
assert(!(/html lang="zh-CHS"/ =~ swapped_body))
|
477
|
-
end
|
478
|
-
|
479
|
-
def test_switch_dom_lang_for_traditional_chinese
|
480
|
-
lang = Lang.new('zh-CHT')
|
481
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
482
|
-
dom = generate_dom
|
483
|
-
values = generate_values
|
484
|
-
values['text_vals']['Traditional Chinese'] = {'zh-CHT' => [{data: 'test'}]}
|
485
|
-
url = h.url
|
486
|
-
|
487
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
488
|
-
assert(/hreflang="zh-Hant"/ =~ swapped_body)
|
489
|
-
assert(!(/hreflang="zh-CHT"/ =~ swapped_body))
|
490
|
-
assert(/html lang="zh-Hant"/ =~ swapped_body)
|
491
|
-
assert(!(/html lang="zh-CHT"/ =~ swapped_body))
|
492
|
-
end
|
493
|
-
|
494
|
-
def test_switch_dom_lang_when_proxy_change_protocol
|
495
|
-
lang = Lang.new('en')
|
496
|
-
env = Wovnrb.get_env('url' => 'http://page.com', 'HTTP_X_FORWARDED_PROTO' => 'https')
|
497
|
-
header = Wovnrb::Headers.new(env, Wovnrb.get_settings)
|
498
|
-
html = '<html></html>'
|
499
|
-
dom = Wovnrb.to_dom(html)
|
500
|
-
url = header.url
|
501
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, generate_values, url, header)
|
502
|
-
assert(swapped_body.include?('hreflang="ja" href="https://page.com/ja/"'))
|
503
|
-
assert(swapped_body.include?('hreflang="en" href="https://page.com/"'))
|
504
|
-
end
|
505
|
-
|
506
|
-
def test_switch_lang
|
507
|
-
lang = Lang.new('ja')
|
508
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
509
|
-
dom = generate_dom
|
510
|
-
values = generate_values
|
511
|
-
url = h.url
|
512
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
513
|
-
assert_equal(generate_body('translated_in_japanese'), swapped_body)
|
514
|
-
end
|
515
|
-
|
516
|
-
def test_switch_lang_unified_values
|
517
|
-
lang = Lang.new('ja')
|
518
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
519
|
-
dom = generate_dom('unified_values')
|
520
|
-
values = generate_unified_values
|
521
|
-
url = h.url
|
522
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
523
|
-
assert_equal(generate_body('unified_values_ja'), swapped_body)
|
524
|
-
end
|
525
|
-
|
526
|
-
def test_switch_lang_with_html_fragment
|
527
|
-
lang = Lang.new('ja')
|
528
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
529
|
-
dom = Helpers::NokogumboHelper::parse_fragment('<span>Hello</span>')
|
530
|
-
values = generate_values
|
531
|
-
url = h.url
|
532
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
533
|
-
assert_equal('<span><!--wovn-src:Hello-->こんにちは</span>', swapped_body)
|
534
|
-
end
|
535
|
-
|
536
|
-
def test_switch_lang_href_javascript
|
537
|
-
lang = Lang.new('ja')
|
538
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
539
|
-
dom = generate_dom('a_href_javascript')
|
540
|
-
values = generate_values
|
541
|
-
url = h.url
|
542
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
543
|
-
assert_equal(generate_body('a_href_javascript_translated'), swapped_body)
|
544
|
-
end
|
545
|
-
|
546
|
-
def test_switch_lang_meta_img_alt_tags
|
547
|
-
lang = Lang.new('ja')
|
548
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
549
|
-
dom = generate_dom('meta_img_alt_tags')
|
550
|
-
values = generate_values
|
551
|
-
url = h.url
|
552
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
553
|
-
assert_equal(generate_body('meta_img_alt_tags_translated'), swapped_body)
|
554
|
-
end
|
555
|
-
|
556
|
-
def test_switch_lang_wovn_ignore
|
557
|
-
lang = Lang.new('ja')
|
558
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
559
|
-
dom = generate_dom('ignore_parent')
|
560
|
-
values = generate_values
|
561
|
-
url = h.url
|
562
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
563
|
-
assert_equal(generate_body('ignore_parent_translated_in_japanese'), swapped_body)
|
564
|
-
end
|
565
|
-
|
566
|
-
def test_switch_lang_wovn_ignore_everything
|
567
|
-
lang = Lang.new('ja')
|
568
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
569
|
-
dom = generate_dom('ignore_everything')
|
570
|
-
values = generate_values
|
571
|
-
url = h.url
|
572
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
573
|
-
assert_equal(generate_body('ignore_everything_translated'), swapped_body)
|
574
|
-
end
|
575
|
-
|
576
|
-
def test_switch_lang_wovn_ignore_empty
|
577
|
-
lang = Lang.new('ja')
|
578
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
579
|
-
dom = generate_dom('empty')
|
580
|
-
values = generate_values
|
581
|
-
url = h.url
|
582
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
583
|
-
assert_equal(generate_body('empty_translated'), swapped_body)
|
584
|
-
end
|
585
|
-
|
586
|
-
def test_switch_lang_wovn_ignore_empty_single_quote
|
587
|
-
lang = Lang.new('ja')
|
588
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
589
|
-
dom = generate_dom('empty_single_quote')
|
590
|
-
values = generate_values
|
591
|
-
url = h.url
|
592
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
593
|
-
assert_equal(generate_body('empty_single_quote_translated'), swapped_body)
|
594
|
-
end
|
595
|
-
|
596
|
-
def test_switch_lang_wovn_ignore_empty_double_quote
|
597
|
-
lang = Lang.new('ja')
|
598
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
599
|
-
dom = generate_dom('empty_double_quote')
|
600
|
-
values = generate_values
|
601
|
-
url = h.url
|
602
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
603
|
-
assert_equal(generate_body('empty_double_quote_translated'), swapped_body)
|
604
|
-
end
|
605
|
-
|
606
|
-
def test_switch_lang_wovn_ignore_value_single_quote
|
607
|
-
lang = Lang.new('ja')
|
608
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
609
|
-
dom = generate_dom('value_single_quote')
|
610
|
-
values = generate_values
|
611
|
-
url = h.url
|
612
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
613
|
-
assert_equal(generate_body('value_single_quote_translated'), swapped_body)
|
614
|
-
end
|
615
|
-
|
616
|
-
def test_switch_lang_wovn_ignore_value_double_quote
|
617
|
-
lang = Lang.new('ja')
|
618
|
-
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://ignore-page.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
619
|
-
dom = generate_dom('value_double_quote')
|
620
|
-
values = generate_values
|
621
|
-
url = h.url
|
622
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, values, url, h)
|
623
|
-
assert_equal(generate_body('value_double_quote_translated'), swapped_body)
|
624
|
-
end
|
625
|
-
|
626
464
|
def test_get_code_from_custom_lang
|
627
465
|
store = Store.instance
|
628
|
-
store.settings['custom_lang_aliases'] = {'ja' => 'staging-ja'}
|
466
|
+
store.settings['custom_lang_aliases'] = { 'ja' => 'staging-ja' }
|
629
467
|
assert_equal('ja', Wovnrb::Lang.get_code('staging-ja'))
|
630
468
|
end
|
631
469
|
|
632
470
|
def test_add_lang_code_with_custom_lang_aliases
|
633
471
|
lang = Lang.new('fr')
|
634
|
-
Store.instance.update_settings(
|
472
|
+
Store.instance.update_settings('custom_lang_aliases' => { 'fr' => 'staging-fr' })
|
635
473
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
|
636
|
-
assert_equal(
|
637
|
-
end
|
638
|
-
|
639
|
-
def test_switch_dom_lang_for_keeping_originl_encoding_decoding
|
640
|
-
lang = Lang.new('ja')
|
641
|
-
header = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings)
|
642
|
-
html = <<-HTML
|
643
|
-
<head>
|
644
|
-
<link rel="stylesheet" type="text/css" href="%3Ca%3E%E3%81%B5%E3%82%86%3C%2Fa%3E/theme.css">
|
645
|
-
<link rel="stylesheet" type="text/css" href="テスト.css">
|
646
|
-
</head>
|
647
|
-
<ul>
|
648
|
-
<li><a href="http://page.com/%e5%ba%83%e5%b0%be">encoded japanese path</a></li>
|
649
|
-
<li><a href="http://page.com/テスト/DxA9J">no encoded japanese path</a></li>
|
650
|
-
<li><a href="http://page.com/#DnE897">decoded invalid path</a></li>
|
651
|
-
<li><a href="http://page.com/%23DnE897">encoded invalid path</a>
|
652
|
-
</ul>
|
653
|
-
HTML
|
654
|
-
|
655
|
-
dom = Wovnrb.to_dom(html)
|
656
|
-
url = header.url
|
657
|
-
|
658
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, generate_values, url, header)
|
659
|
-
assert(swapped_body.include?('<link rel="stylesheet" type="text/css" href="%3Ca%3E%E3%81%B5%E3%82%86%3C%2Fa%3E/theme.css">'))
|
660
|
-
assert(swapped_body.include?('<link rel="stylesheet" type="text/css" href="テスト.css">'))
|
661
|
-
assert(swapped_body.include?('<a href="http://page.com/ja/%e5%ba%83%e5%b0%be">encoded japanese path</a>'))
|
662
|
-
assert(swapped_body.include?('<a href="http://page.com/ja/テスト/DxA9J">no encoded japanese path</a>'))
|
663
|
-
assert(swapped_body.include?('<a href="http://page.com/ja/#DnE897">decoded invalid path</a>'))
|
664
|
-
assert(swapped_body.include?('<a href="http://page.com/ja/%23DnE897">encoded invalid path</a>'))
|
665
|
-
end
|
666
|
-
|
667
|
-
def test_switch_dom_lang_with_invalid_link
|
668
|
-
lang = Lang.new('en')
|
669
|
-
header = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://page.com'), Wovnrb.get_settings)
|
670
|
-
html = '<a href="※ http://invalid.example.com">無効なリンク</a>'
|
671
|
-
dom = Wovnrb.to_dom(html)
|
672
|
-
url = header.url
|
673
|
-
swapped_body = lang.switch_dom_lang(dom, Store.instance, generate_values, url, header)
|
674
|
-
assert(swapped_body.include?('html'))
|
474
|
+
assert_equal('http://staging-fr.wovn.io/topics/50', lang.add_lang_code('/topics/50', 'subdomain', h))
|
675
475
|
end
|
676
476
|
end
|
677
477
|
end
|