copycat 0.2.6 → 0.2.7
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 +7 -0
- data/Rakefile +6 -0
- data/app/models/copycat_translation.rb +37 -45
- data/lib/copycat/version.rb +1 -1
- data/spec/dummy/config/application.rb +2 -0
- data/spec/dummy/config/initializers/copycat.rb +2 -2
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/{20120320194234_create_copycat_translations.copycat_engine.rb → 20150824125132_create_copycat_translations.copycat_engine.rb} +0 -0
- data/spec/dummy/db/schema.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +18 -2052
- data/spec/dummy/log/test.log +841 -27512
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/5pjjE7UQ1zT-W3Rm7l8onDEWZV9b-lyRmeW9nFAbLoU.cache +2 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/9ZnyF5L7jalLFn0sk_WNwUCeeXBylJBp2yRgFPQE3ho.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/IfC1KmXTw1ppvrXEYn3N4C2stMo3ing1GipxNQ0oML4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/YQfOnucF3bHs51e6OOpX6Gh8ih98sfqcSc88X90cxYg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/bUaVNTYJb9Cp-33TI2vIHrdmO8U0fOh3szyB6M4K7BY.cache +3 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/j2gYDVPsuXlIFLdHtvLu9pJtjz2Z1dmLFVDQp9jNEwc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qGrLWZnG1ElHmKVImQl1l5olVVtVeDSZ13_9Ll1qeYU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/zQEVaz1UlfTQQY8e-XT2PRLny8dybtFJeuDtPTwwS2E.cache +1 -0
- data/spec/factories/copycat_translations.rb +3 -3
- data/spec/{integration → features}/copycat_spec.rb +78 -78
- data/spec/features/dummy_spec.rb +92 -0
- data/spec/lib/copycat_spec.rb +5 -5
- data/spec/models/copycat_translation_spec.rb +50 -69
- data/spec/spec_helper.rb +5 -2
- data/spec/support/export.yml +10 -0
- metadata +143 -47
- data/spec/dummy/tmp/cache/assets/C19/060/sprockets%2F125436f53217b7f564aa5016d1168709 +0 -0
- data/spec/dummy/tmp/cache/assets/CB3/6E0/sprockets%2F0f4c96b04436bf7ae900561753947d4c +0 -0
- data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/D09/190/sprockets%2Fb2bddd007999a56d8b20c92301ea1983 +0 -0
- data/spec/dummy/tmp/cache/assets/D1A/DB0/sprockets%2F26d700197b8d25f954d56d8f31f2c8bc +0 -0
- data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/DA4/EE0/sprockets%2Fcd39e3d56788faea331e0f5bac67329b +0 -0
- data/spec/dummy/tmp/cache/assets/DBD/220/sprockets%2F0cbff5c1a349439c1c444cbb4a57acc4 +0 -0
- data/spec/dummy/tmp/cache/assets/DDD/780/sprockets%2Fe7880b84c3ecb507fabc99b9ef6b70e3 +0 -0
- data/spec/dummy/tmp/cache/assets/DF8/310/sprockets%2Fccb12c4009c2f876d51dee8bae4c64ec +0 -0
- data/spec/integration/dummy_spec.rb +0 -92
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"cfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"Sfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets;TT
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css?type=text/css&id=44a81ee07e41d721880da38bef491b2aae63a506c3b4b40084eea75e9fc78e98:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=4bfd9c65970fe06b4964470bbf20c1c68255b2420fa04d5b4a39a9999e0057c5:ET
|
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash{
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"cfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css;TTI"Sfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets;TT
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%9�#�U�-���Jnݶ�W��Gx5>T�u�\x��:�
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
|
@@ -2,10 +2,10 @@ FactoryGirl.define do
|
|
2
2
|
sequence :string do |n|
|
3
3
|
"string%09d" % n
|
4
4
|
end
|
5
|
-
|
5
|
+
|
6
6
|
factory :copycat_translation do
|
7
|
-
key {
|
8
|
-
value {
|
7
|
+
key { generate(:string) }
|
8
|
+
value { generate(:string) }
|
9
9
|
locale I18n.default_locale
|
10
10
|
end
|
11
11
|
end
|
@@ -4,9 +4,9 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
|
6
6
|
feature "copycat index" do
|
7
|
-
|
7
|
+
|
8
8
|
before do
|
9
|
-
|
9
|
+
create(:copycat_translation, :key => "foo", :value => "bar")
|
10
10
|
page.driver.browser.basic_authorize Copycat.username, Copycat.password
|
11
11
|
visit copycat_translations_path
|
12
12
|
end
|
@@ -18,59 +18,59 @@ feature "copycat index" do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "doesn't show any tokens by default" do
|
21
|
-
page.
|
22
|
-
page.
|
21
|
+
expect(page).not_to have_content 'foo'
|
22
|
+
expect(page).not_to have_content 'bar'
|
23
23
|
end
|
24
24
|
|
25
25
|
it "allows search by key" do
|
26
26
|
fill_in 'search', :with => 'foo'
|
27
27
|
click_button 'Search'
|
28
|
-
page.
|
29
|
-
page.
|
28
|
+
expect(page).to have_content 'foo'
|
29
|
+
expect(page).to have_content 'bar'
|
30
30
|
end
|
31
31
|
|
32
32
|
it "allows search by key" do
|
33
33
|
fill_in 'search', :with => 'xfoo'
|
34
34
|
click_button 'Search'
|
35
|
-
page.
|
36
|
-
page.
|
35
|
+
expect(page).not_to have_content 'foo'
|
36
|
+
expect(page).not_to have_content 'bar'
|
37
37
|
end
|
38
38
|
|
39
39
|
it "allows search by value" do
|
40
40
|
fill_in 'search', :with => 'bar'
|
41
41
|
click_button 'Search'
|
42
|
-
page.
|
43
|
-
page.
|
42
|
+
expect(page).to have_content 'foo'
|
43
|
+
expect(page).to have_content 'bar'
|
44
44
|
end
|
45
45
|
|
46
46
|
it "allows search by value" do
|
47
47
|
fill_in 'search', :with => 'xbar'
|
48
48
|
click_button 'Search'
|
49
|
-
page.
|
50
|
-
page.
|
49
|
+
expect(page).not_to have_content 'foo'
|
50
|
+
expect(page).not_to have_content 'bar'
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
it "searches in the middles of strings" do
|
54
|
-
|
54
|
+
create(:copycat_translation, :key => "site.index.something")
|
55
55
|
fill_in 'search', :with => 'index'
|
56
56
|
click_button 'Search'
|
57
|
-
page.
|
57
|
+
expect(page).to have_content 'site.index.something'
|
58
58
|
end
|
59
59
|
|
60
60
|
it "can show all" do
|
61
|
-
|
61
|
+
create(:copycat_translation, :key => "foe", :value => "beer")
|
62
62
|
click_button 'Search'
|
63
|
-
page.
|
64
|
-
page.
|
63
|
+
expect(page).to have_content 'foo'
|
64
|
+
expect(page).to have_content 'foe'
|
65
65
|
end
|
66
66
|
|
67
67
|
context "more than one locale" do
|
68
68
|
|
69
69
|
before do
|
70
70
|
CopycatTranslation.destroy_all
|
71
|
-
|
72
|
-
|
73
|
-
|
71
|
+
create(:copycat_translation, key: "foo", value: "bar1", locale: "en")
|
72
|
+
create(:copycat_translation, key: "foo", value: "bar2", locale: "fa")
|
73
|
+
create(:copycat_translation, key: "foo", value: "bar3", locale: "it")
|
74
74
|
end
|
75
75
|
|
76
76
|
#locale
|
@@ -95,100 +95,100 @@ feature "copycat index" do
|
|
95
95
|
|
96
96
|
it "nil locale, nil search" do
|
97
97
|
visit copycat_translations_path
|
98
|
-
page.
|
98
|
+
expect(page).not_to have_content 'foo'
|
99
99
|
end
|
100
100
|
|
101
101
|
it "nil locale, blank search" do
|
102
102
|
# impossible for user to replicate this case
|
103
103
|
visit copycat_translations_path('search' => '', 'commit' => 'Search')
|
104
|
-
page.
|
105
|
-
page.
|
106
|
-
page.
|
104
|
+
expect(page).to have_content 'bar1'
|
105
|
+
expect(page).not_to have_content 'bar2'
|
106
|
+
expect(page).not_to have_content 'bar3'
|
107
107
|
end
|
108
108
|
|
109
109
|
it "nil locale, present search" do
|
110
110
|
# impossible for user to replicate this case
|
111
111
|
visit copycat_translations_path('search' => 'foo', 'commit' => 'Search')
|
112
|
-
page.
|
113
|
-
page.
|
114
|
-
page.
|
112
|
+
expect(page).to have_content 'bar1'
|
113
|
+
expect(page).not_to have_content 'bar2'
|
114
|
+
expect(page).not_to have_content 'bar3'
|
115
115
|
visit copycat_translations_path('search' => 'fuu', 'commit' => 'Search')
|
116
|
-
page.
|
116
|
+
expect(page).not_to have_content 'foo'
|
117
117
|
end
|
118
118
|
|
119
119
|
it "blank locale, nil search" do
|
120
120
|
# impossible for user to replicate this case
|
121
121
|
visit copycat_translations_path('locale' => '', 'commit' => 'Search')
|
122
|
-
page.
|
122
|
+
expect(page).not_to have_content 'foo'
|
123
123
|
end
|
124
124
|
|
125
125
|
it "blank locale, blank search" do
|
126
126
|
select '', :from => 'locale'
|
127
127
|
click_button 'Search'
|
128
|
-
page.
|
129
|
-
page.
|
130
|
-
page.
|
128
|
+
expect(page).to have_content 'bar1'
|
129
|
+
expect(page).to have_content 'bar2'
|
130
|
+
expect(page).to have_content 'bar3'
|
131
131
|
end
|
132
132
|
|
133
133
|
it "blank locale, present search" do
|
134
134
|
select '', :from => 'locale'
|
135
135
|
fill_in 'search', :with => 'foo'
|
136
136
|
click_button 'Search'
|
137
|
-
page.
|
138
|
-
page.
|
139
|
-
page.
|
137
|
+
expect(page).to have_content 'bar1'
|
138
|
+
expect(page).to have_content 'bar2'
|
139
|
+
expect(page).to have_content 'bar3'
|
140
140
|
fill_in 'search', :with => 'fuu'
|
141
141
|
click_button 'Search'
|
142
|
-
page.
|
142
|
+
expect(page).not_to have_content 'foo'
|
143
143
|
end
|
144
144
|
|
145
145
|
it "present locale, nil search" do
|
146
146
|
# impossible for user to replicate this case
|
147
147
|
visit copycat_translations_path('locale' => 'en', 'commit' => 'Search')
|
148
|
-
page.
|
148
|
+
expect(page).not_to have_content 'foo'
|
149
149
|
end
|
150
150
|
|
151
151
|
it "present locale, blank search" do
|
152
152
|
select 'en', :from => 'locale'
|
153
153
|
click_button 'Search'
|
154
|
-
page.
|
155
|
-
page.
|
156
|
-
page.
|
154
|
+
expect(page).to have_content 'bar1'
|
155
|
+
expect(page).not_to have_content 'bar2'
|
156
|
+
expect(page).not_to have_content 'bar3'
|
157
157
|
select 'fa', :from => 'locale'
|
158
158
|
click_button 'Search'
|
159
|
-
page.
|
160
|
-
page.
|
161
|
-
page.
|
159
|
+
expect(page).not_to have_content 'bar1'
|
160
|
+
expect(page).to have_content 'bar2'
|
161
|
+
expect(page).not_to have_content 'bar3'
|
162
162
|
select 'it', :from => 'locale'
|
163
163
|
click_button 'Search'
|
164
|
-
page.
|
165
|
-
page.
|
166
|
-
page.
|
164
|
+
expect(page).not_to have_content 'bar1'
|
165
|
+
expect(page).not_to have_content 'bar2'
|
166
|
+
expect(page).to have_content 'bar3'
|
167
167
|
end
|
168
168
|
|
169
169
|
it "present locale, present search" do
|
170
170
|
select 'en', :from => 'locale'
|
171
171
|
fill_in 'search', :with => 'foo'
|
172
172
|
click_button 'Search'
|
173
|
-
page.
|
174
|
-
page.
|
175
|
-
page.
|
173
|
+
expect(page).to have_content 'bar1'
|
174
|
+
expect(page).not_to have_content 'bar2'
|
175
|
+
expect(page).not_to have_content 'bar3'
|
176
176
|
select 'fa', :from => 'locale'
|
177
177
|
fill_in 'search', :with => 'foo'
|
178
178
|
click_button 'Search'
|
179
|
-
page.
|
180
|
-
page.
|
181
|
-
page.
|
179
|
+
expect(page).not_to have_content 'bar1'
|
180
|
+
expect(page).to have_content 'bar2'
|
181
|
+
expect(page).not_to have_content 'bar3'
|
182
182
|
select 'it', :from => 'locale'
|
183
183
|
fill_in 'search', :with => 'foo'
|
184
184
|
click_button 'Search'
|
185
|
-
page.
|
186
|
-
page.
|
187
|
-
page.
|
185
|
+
expect(page).not_to have_content 'bar1'
|
186
|
+
expect(page).not_to have_content 'bar2'
|
187
|
+
expect(page).to have_content 'bar3'
|
188
188
|
select 'en', :from => 'locale'
|
189
189
|
fill_in 'search', :with => 'fuu'
|
190
190
|
click_button 'Search'
|
191
|
-
page.
|
191
|
+
expect(page).not_to have_content 'foo'
|
192
192
|
end
|
193
193
|
|
194
194
|
end
|
@@ -197,7 +197,7 @@ end
|
|
197
197
|
|
198
198
|
feature "copycat edit" do
|
199
199
|
before do
|
200
|
-
|
200
|
+
create(:copycat_translation, :key => "foo", :value => "bar")
|
201
201
|
page.driver.browser.basic_authorize Copycat.username, Copycat.password
|
202
202
|
visit copycat_translations_path
|
203
203
|
end
|
@@ -212,7 +212,7 @@ end
|
|
212
212
|
|
213
213
|
feature "copycat update, delete" do
|
214
214
|
before do
|
215
|
-
|
215
|
+
create(:copycat_translation, :key => "foo", :value => "bar")
|
216
216
|
page.driver.browser.basic_authorize Copycat.username, Copycat.password
|
217
217
|
visit copycat_translations_path
|
218
218
|
fill_in 'search', :with => 'foo'
|
@@ -223,16 +223,16 @@ feature "copycat update, delete" do
|
|
223
223
|
scenario "update" do
|
224
224
|
fill_in "copycat_translation[value]", :with => 'baz'
|
225
225
|
click_button "Update"
|
226
|
-
current_path.
|
227
|
-
CopycatTranslation.find_by_key("foo").value.
|
228
|
-
page.
|
226
|
+
expect(current_path).to eq(copycat_translations_path)
|
227
|
+
expect(CopycatTranslation.find_by_key("foo").value).to eq('baz')
|
228
|
+
expect(page).to have_content "foo updated!"
|
229
229
|
end
|
230
230
|
|
231
231
|
scenario "delete" do
|
232
232
|
click_button "Delete this item"
|
233
|
-
current_path.
|
234
|
-
CopycatTranslation.find_by_key("foo").
|
235
|
-
page.
|
233
|
+
expect(current_path).to eq(copycat_translations_path)
|
234
|
+
expect(CopycatTranslation.find_by_key("foo")).to be_nil
|
235
|
+
expect(page).to have_content "foo deleted!"
|
236
236
|
end
|
237
237
|
end
|
238
238
|
|
@@ -242,11 +242,11 @@ feature "downloading and uploading yaml files" do
|
|
242
242
|
end
|
243
243
|
|
244
244
|
it "round-trips the YAML" do
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
245
|
+
create(:copycat_translation, :key => "a.foo1", :value => "bar1")
|
246
|
+
create(:copycat_translation, :key => "a.foo2:", :value => "bar2")
|
247
|
+
create(:copycat_translation, :key => "a.b.foo3", :value => "bar3")
|
248
|
+
create(:copycat_translation, :key => "c.foo4", :value => "bar4")
|
249
|
+
create(:copycat_translation, :key => 2, :value => "bar5")
|
250
250
|
assert CopycatTranslation.count == 5
|
251
251
|
|
252
252
|
visit import_export_copycat_translations_path
|
@@ -254,7 +254,7 @@ feature "downloading and uploading yaml files" do
|
|
254
254
|
CopycatTranslation.destroy_all
|
255
255
|
assert CopycatTranslation.count == 0
|
256
256
|
|
257
|
-
yaml = page.
|
257
|
+
yaml = page.body
|
258
258
|
file = Tempfile.new 'copycat'
|
259
259
|
file.write yaml
|
260
260
|
file.close
|
@@ -274,13 +274,13 @@ feature "downloading and uploading yaml files" do
|
|
274
274
|
|
275
275
|
it "round-trips the yaml with complicated text" do
|
276
276
|
value = "“hello world“ üokåa®fgsdf;::fs;kdf"
|
277
|
-
|
277
|
+
create(:copycat_translation, :key => "a.foo", :value => value)
|
278
278
|
|
279
279
|
visit import_export_copycat_translations_path
|
280
280
|
click_link 'Download as YAML'
|
281
281
|
CopycatTranslation.destroy_all
|
282
282
|
|
283
|
-
yaml = page.
|
283
|
+
yaml = page.body
|
284
284
|
file = Tempfile.new 'copycat'
|
285
285
|
file.write yaml
|
286
286
|
file.close
|
@@ -301,8 +301,8 @@ feature "downloading and uploading yaml files" do
|
|
301
301
|
attach_file "file", file.path
|
302
302
|
click_button "Upload"
|
303
303
|
file.unlink
|
304
|
-
page.status_code.
|
305
|
-
page.
|
304
|
+
expect(page.status_code).to eq(400)
|
305
|
+
expect(page).to have_content("There was an error processing your upload!")
|
306
306
|
assert CopycatTranslation.count == 0
|
307
307
|
end
|
308
308
|
|
@@ -339,13 +339,13 @@ feature "locales" do
|
|
339
339
|
end
|
340
340
|
|
341
341
|
it "exports yaml containing multiple locales" do
|
342
|
-
|
343
|
-
|
342
|
+
create(:copycat_translation, locale: 'en', key: 'hello', value: 'world')
|
343
|
+
create(:copycat_translation, locale: 'es', key: 'hello', value: 'mundo')
|
344
344
|
|
345
345
|
visit download_copycat_translations_path
|
346
346
|
yaml = page.text
|
347
347
|
assert yaml =~ /en:\s*hello: world/
|
348
|
-
assert yaml =~ /es:\s*hello: mundo/
|
348
|
+
assert yaml =~ /es:\s*hello: mundo/
|
349
349
|
end
|
350
350
|
|
351
351
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
feature "use #t" do
|
6
|
+
|
7
|
+
it "the dummy app has a translation for site.index.header but not site.index.intro" do
|
8
|
+
expect(I18n.t('site.index.header')).to eq('The Header')
|
9
|
+
expect(I18n.t('site.index.intro')).to eq("translation missing: en.site.index.intro")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "uses i18n.t" do
|
13
|
+
visit root_path
|
14
|
+
expect(page).to have_content 'The Header'
|
15
|
+
expect(page).to have_content 'Intro' #ActionView::Helpers::TranslationHelper#translate wrapper
|
16
|
+
end
|
17
|
+
|
18
|
+
it "creates a copycat_translation if the yaml has an entry" do
|
19
|
+
expect(CopycatTranslation.find_by_key('site.index.header')).to be_nil
|
20
|
+
visit root_path
|
21
|
+
expect(CopycatTranslation.find_by_key('site.index.header')).not_to be_nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it "creates a copycat_translation if the yaml does not have an entry" do
|
25
|
+
expect(CopycatTranslation.find_by_key('site.index.intro')).to be_nil
|
26
|
+
visit root_path
|
27
|
+
expect(CopycatTranslation.find_by_key('site.index.intro')).not_to be_nil
|
28
|
+
end
|
29
|
+
|
30
|
+
it "shows the copycat_translation instead of the yaml" do
|
31
|
+
create(:copycat_translation, key: 'site.index.header', value: 'A different header')
|
32
|
+
visit root_path
|
33
|
+
expect(page).not_to have_content 'The Header'
|
34
|
+
expect(page).to have_content 'A different header'
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
feature "locales" do
|
40
|
+
|
41
|
+
it "displays different text based on users' locale" do
|
42
|
+
create(:copycat_translation, locale: 'en', key: 'site.index.intro', value: 'world')
|
43
|
+
create(:copycat_translation, locale: 'es', key: 'site.index.intro', value: 'mundo')
|
44
|
+
|
45
|
+
I18n.locale = :en
|
46
|
+
visit root_path
|
47
|
+
expect(page).to have_content 'world'
|
48
|
+
expect(page).not_to have_content 'mundo'
|
49
|
+
|
50
|
+
I18n.locale = :es
|
51
|
+
visit root_path
|
52
|
+
expect(page).to have_content 'mundo'
|
53
|
+
expect(page).not_to have_content 'world'
|
54
|
+
|
55
|
+
I18n.locale = :fa
|
56
|
+
visit root_path
|
57
|
+
expect(page).not_to have_content 'world'
|
58
|
+
expect(page).not_to have_content 'mundo'
|
59
|
+
|
60
|
+
I18n.locale = :en # reset
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
feature "yaml" do
|
66
|
+
|
67
|
+
it "round-trips both translations correctly (and doesn't export nils)" do
|
68
|
+
visit root_path
|
69
|
+
expect(CopycatTranslation.find_by_key('site.index.intro').value).to be_nil
|
70
|
+
expect(CopycatTranslation.find_by_key('site.index.header').value).to eq('The Header')
|
71
|
+
expect(CopycatTranslation.count).to eq(2)
|
72
|
+
|
73
|
+
page.driver.browser.basic_authorize Copycat.username, Copycat.password
|
74
|
+
visit import_export_copycat_translations_path
|
75
|
+
click_link 'Download as YAML'
|
76
|
+
CopycatTranslation.destroy_all
|
77
|
+
expect(CopycatTranslation.count).to eq(0)
|
78
|
+
yaml = page.body
|
79
|
+
file = Tempfile.new 'copycat'
|
80
|
+
file.write yaml
|
81
|
+
file.close
|
82
|
+
visit import_export_copycat_translations_path
|
83
|
+
attach_file "file", file.path
|
84
|
+
click_button "Upload"
|
85
|
+
file.unlink
|
86
|
+
|
87
|
+
expect(CopycatTranslation.count).to eq(1)
|
88
|
+
expect(CopycatTranslation.find_by_key('site.index.intro')).to be_nil
|
89
|
+
expect(CopycatTranslation.find_by_key('site.index.header').value).to eq('The Header')
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|