copycat 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/stylesheets/copycat_engine.css +14 -1
- data/app/controllers/copycat_translations_controller.rb +0 -1
- data/app/models/copycat_translation.rb +48 -17
- data/app/views/copycat_translations/edit.html.erb +3 -1
- data/app/views/copycat_translations/index.html.erb +1 -1
- data/app/views/copycat_translations/readme.html.erb +3 -6
- data/db/migrate/20120313191745_create_copycat_translations.rb +2 -1
- data/lib/copycat.rb +4 -81
- data/lib/copycat/version.rb +1 -1
- data/spec/dummy/config/initializers/copycat.rb +2 -2
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/{20120316153248_create_copycat_translations.copycat_engine.rb → 20120320143433_create_copycat_translations.copycat_engine.rb} +2 -1
- data/spec/dummy/db/schema.rb +3 -2
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +26 -0
- data/spec/dummy/log/test.log +625 -0
- data/spec/factories/copycat_translations.rb +1 -0
- data/spec/integration/copycat_spec.rb +61 -2
- data/spec/lib/copycat_spec.rb +4 -22
- data/spec/models/copycat_translation_spec.rb +27 -1
- metadata +6 -6
@@ -89,8 +89,6 @@ feature "downloading and uploading yaml files" do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it "gives 400 on bad upload" do
|
92
|
-
visit "/copycat_translations.yaml"
|
93
|
-
|
94
92
|
file = Tempfile.new 'copycat'
|
95
93
|
file.write "<<<%%#$W%s"
|
96
94
|
file.close
|
@@ -106,3 +104,64 @@ feature "downloading and uploading yaml files" do
|
|
106
104
|
|
107
105
|
end
|
108
106
|
|
107
|
+
feature "locales" do
|
108
|
+
|
109
|
+
it "displays different text based on users' locale" do
|
110
|
+
Factory(:copycat_translation, locale: 'en', key: 'site.index.intro', value: 'world')
|
111
|
+
Factory(:copycat_translation, locale: 'es', key: 'site.index.intro', value: 'mundo')
|
112
|
+
|
113
|
+
I18n.locale = :en
|
114
|
+
visit root_path
|
115
|
+
page.should have_content 'world'
|
116
|
+
page.should_not have_content 'mundo'
|
117
|
+
|
118
|
+
I18n.locale = :es
|
119
|
+
visit root_path
|
120
|
+
page.should have_content 'mundo'
|
121
|
+
page.should_not have_content 'world'
|
122
|
+
|
123
|
+
I18n.locale = :fa
|
124
|
+
visit root_path
|
125
|
+
page.should_not have_content 'world'
|
126
|
+
page.should_not have_content 'mundo'
|
127
|
+
|
128
|
+
I18n.locale = :en # reset
|
129
|
+
end
|
130
|
+
|
131
|
+
it "imports yaml containing multiple locales" do
|
132
|
+
file = Tempfile.new 'copycat'
|
133
|
+
file.write <<-YAML
|
134
|
+
en:
|
135
|
+
hello: world
|
136
|
+
es:
|
137
|
+
hello: mundo
|
138
|
+
YAML
|
139
|
+
file.close
|
140
|
+
|
141
|
+
page.driver.browser.basic_authorize COPYCAT_USERNAME, COPYCAT_PASSWORD
|
142
|
+
visit upload_copycat_translations_path
|
143
|
+
attach_file "file", file.path
|
144
|
+
click_button "Upload"
|
145
|
+
file.unlink
|
146
|
+
|
147
|
+
assert CopycatTranslation.count == 2
|
148
|
+
a = CopycatTranslation.where(locale: 'en').first
|
149
|
+
assert a.key == 'hello'
|
150
|
+
assert a.value == 'world'
|
151
|
+
b = CopycatTranslation.where(locale: 'es').first
|
152
|
+
assert b.key == 'hello'
|
153
|
+
assert b.value == 'mundo'
|
154
|
+
end
|
155
|
+
|
156
|
+
it "exports yaml containing multiple locales" do
|
157
|
+
Factory(:copycat_translation, locale: 'en', key: 'hello', value: 'world')
|
158
|
+
Factory(:copycat_translation, locale: 'es', key: 'hello', value: 'mundo')
|
159
|
+
|
160
|
+
page.driver.browser.basic_authorize COPYCAT_USERNAME, COPYCAT_PASSWORD
|
161
|
+
visit "/copycat_translations.yaml"
|
162
|
+
yaml = page.text
|
163
|
+
assert yaml =~ /en:\s*hello: world/
|
164
|
+
assert yaml =~ /es:\s*hello: mundo/
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
data/spec/lib/copycat_spec.rb
CHANGED
@@ -31,30 +31,12 @@ describe Copycat do
|
|
31
31
|
end
|
32
32
|
it "returns copycat_translation if present" do
|
33
33
|
cct = FactoryGirl.create(:copycat_translation)
|
34
|
-
base.lookup(
|
34
|
+
base.lookup(cct.locale, cct.key).should == cct.value
|
35
35
|
end
|
36
36
|
it "creates copycat_translation if one is missing" do
|
37
|
-
CopycatTranslation.
|
38
|
-
base.lookup(
|
39
|
-
CopycatTranslation.
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#hash_flatten" do
|
44
|
-
it "flattens hashes" do
|
45
|
-
before = {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i", "j" => "k"}, "l" => "m"}}
|
46
|
-
after = Copycat.hash_flatten(before)
|
47
|
-
assert after == {"a.b" => "c", "a.d" => "e", "f.g.h" => "i", "f.g.j" => "k", "f.l" => "m"}
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "#hash_fatten" do
|
52
|
-
it "fattens hashes" do
|
53
|
-
before = {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i"}, "l" => "m"}}
|
54
|
-
keys = "f.g.j".split(".")
|
55
|
-
value = "k"
|
56
|
-
after = Copycat.hash_fatten(before, keys, value)
|
57
|
-
assert after == {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i", "j" => "k"}, "l" => "m"}}
|
37
|
+
CopycatTranslation.where(locale: 'en', key: 'foo').should be_empty
|
38
|
+
base.lookup('en', 'foo')
|
39
|
+
CopycatTranslation.where(locale: 'en', key: 'foo').should_not be_empty
|
58
40
|
end
|
59
41
|
end
|
60
42
|
|
@@ -3,6 +3,32 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe CopycatTranslation do
|
5
5
|
|
6
|
+
describe "database constraints" do
|
7
|
+
it "validates uniqueness of key & locale" do
|
8
|
+
CopycatTranslation.new(key: "foo", locale: "en", value: "bar").save
|
9
|
+
a = CopycatTranslation.new(key: "foo", locale: "en", value: "bar2")
|
10
|
+
expect { a.save }.should raise_error
|
11
|
+
b = CopycatTranslation.new(key: "foo", locale: "fa", value: "bar")
|
12
|
+
expect { b.save }.should_not raise_error
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "helper methods" do
|
17
|
+
it "flattens hashes" do
|
18
|
+
before = {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i", "j" => "k"}, "l" => "m"}}
|
19
|
+
after = CopycatTranslation.hash_flatten(before)
|
20
|
+
assert after == {"a.b" => "c", "a.d" => "e", "f.g.h" => "i", "f.g.j" => "k", "f.l" => "m"}
|
21
|
+
end
|
22
|
+
|
23
|
+
it "fattens hashes" do
|
24
|
+
hash = {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i"}, "l" => "m"}}
|
25
|
+
keys = "f.g.j".split(".")
|
26
|
+
value = "k"
|
27
|
+
CopycatTranslation.hash_fatten!(hash, keys, value)
|
28
|
+
assert hash == {"a" => {"b" => "c", "d" => "e"}, "f" => {"g" => {"h" => "i", "j" => "k"}, "l" => "m"}}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
6
32
|
it "imports YAML" do
|
7
33
|
Factory(:copycat_translation, :key => "sample_copy", :value => "copyfoo")
|
8
34
|
Factory(:copycat_translation, :key => "sample_copy2", :value => "copybaz")
|
@@ -27,7 +53,7 @@ describe CopycatTranslation do
|
|
27
53
|
it "can be consumed by i18N" do
|
28
54
|
I18n.t('site.title').should_not == 'My Blog'
|
29
55
|
CopycatTranslation.destroy_all
|
30
|
-
CopycatTranslation.create(key: 'site.title', value: 'My Blog')
|
56
|
+
CopycatTranslation.create(key: 'site.title', value: 'My Blog', locale: 'en')
|
31
57
|
data = YAML.load(CopycatTranslation.export_yaml)
|
32
58
|
CopycatTranslation.destroy_all
|
33
59
|
data.each { |locale, d| I18n.backend.store_translations(locale, d || {}) } #i18n/backend/base.rb:159
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: copycat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-03-
|
13
|
+
date: 2012-03-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2151799480 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: 3.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2151799480
|
26
26
|
description: Edit live website copy.
|
27
27
|
email:
|
28
28
|
- info@vermonster.com
|
@@ -73,7 +73,7 @@ files:
|
|
73
73
|
- spec/dummy/config/routes.rb
|
74
74
|
- spec/dummy/config.ru
|
75
75
|
- spec/dummy/db/development.sqlite3
|
76
|
-
- spec/dummy/db/migrate/
|
76
|
+
- spec/dummy/db/migrate/20120320143433_create_copycat_translations.copycat_engine.rb
|
77
77
|
- spec/dummy/db/schema.rb
|
78
78
|
- spec/dummy/db/test.sqlite3
|
79
79
|
- spec/dummy/log/development.log
|
@@ -147,7 +147,7 @@ test_files:
|
|
147
147
|
- spec/dummy/config/routes.rb
|
148
148
|
- spec/dummy/config.ru
|
149
149
|
- spec/dummy/db/development.sqlite3
|
150
|
-
- spec/dummy/db/migrate/
|
150
|
+
- spec/dummy/db/migrate/20120320143433_create_copycat_translations.copycat_engine.rb
|
151
151
|
- spec/dummy/db/schema.rb
|
152
152
|
- spec/dummy/db/test.sqlite3
|
153
153
|
- spec/dummy/log/development.log
|