i15r 0.4.4 → 0.5.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.
- data/.travis.yml +7 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +31 -12
- data/bin/i15r +39 -4
- data/lib/i15r.rb +88 -3
- data/lib/i15r/console_printer.rb +13 -0
- data/lib/i15r/file_reader.rb +7 -0
- data/lib/i15r/file_writer.rb +7 -0
- data/lib/i15r/pattern_matcher.rb +154 -3
- data/lib/i15r/version.rb +2 -2
- data/spec/i15r_spec.rb +73 -71
- data/spec/pattern_matcher_spec.rb +190 -14
- data/spec/spec_helper.rb +37 -2
- data/spec/support/internationalize_matcher.rb +20 -0
- metadata +14 -47
- data/VERSION +0 -1
- data/lib/i15r/base.rb +0 -123
- data/lib/i15r/pattern_matchers/base.rb +0 -40
- data/lib/i15r/pattern_matchers/erb.rb +0 -10
- data/lib/i15r/pattern_matchers/erb/rails_helper_matcher.rb +0 -75
- data/lib/i15r/pattern_matchers/erb/tag_attribute_matcher.rb +0 -26
- data/lib/i15r/pattern_matchers/erb/tag_content_matcher.rb +0 -40
- data/lib/i15r/pattern_matchers/haml.rb +0 -9
- data/lib/i15r/pattern_matchers/haml/rails_helper_matcher.rb +0 -83
- data/lib/i15r/pattern_matchers/haml/tag_content_matcher.rb +0 -52
- data/spec/erb/rails_helper_matcher_spec.rb +0 -81
- data/spec/erb/tag_attribute_matcher_spec.rb +0 -19
- data/spec/erb/tag_content_matcher_spec.rb +0 -43
- data/spec/haml/rails_helper_matcher_spec.rb +0 -92
- data/spec/haml/tag_content_matcher_spec.rb +0 -82
data/spec/i15r_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
-
require
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'i15r'
|
3
4
|
|
4
|
-
describe I15R
|
5
|
+
describe I15R do
|
5
6
|
|
6
7
|
before do
|
7
|
-
@i15r = I15R::
|
8
|
+
@i15r = I15R::Fixture.new
|
8
9
|
end
|
9
10
|
|
10
11
|
describe "converting file paths to message prefixes" do
|
@@ -30,87 +31,101 @@ describe I15R::Base do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
it "should raise if path does not contain any Rails app directories" do
|
34
|
+
#FIXME: Why should we deal only with Rails apps?
|
33
35
|
path = "projects/doodle.rb"
|
34
|
-
lambda { @i15r.file_path_to_message_prefix(path) }.should raise_error(AppFolderNotFound)
|
36
|
+
lambda { @i15r.file_path_to_message_prefix(path) }.should raise_error(I15R::AppFolderNotFound)
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
describe "
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
describe "writing the changed file" do
|
41
|
+
let(:path) { "app/views/users/new.html.erb" }
|
42
|
+
let(:reader) { mock(:read => %Q{<label for="user-name">Name</label>}) }
|
43
|
+
let(:writer) { mock("writer") }
|
44
|
+
let(:printer) { mock("printer") }
|
45
|
+
|
46
|
+
subject { I15R.new(reader, writer, printer) }
|
47
|
+
|
48
|
+
specify do
|
49
|
+
writer.should_receive(:write)
|
50
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>\n})
|
51
|
+
printer.should_receive(:println).with("app/views/users/new.html.erb:")
|
52
|
+
printer.should_receive(:println).with("")
|
53
|
+
printer.should_receive(:print_diff)
|
54
|
+
.with(%Q{<label for="user-name">Name</label>},
|
55
|
+
%Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>})
|
56
|
+
subject.internationalize_file(path)
|
46
57
|
end
|
47
58
|
end
|
48
59
|
|
49
|
-
describe "turning plain messages into i18n message strings" do
|
50
|
-
it "should downcase a single word" do
|
51
|
-
I15R::Base.get_i18n_message_string("Name", "users.new").should == "users.new.name"
|
52
|
-
end
|
53
60
|
|
54
|
-
|
55
|
-
|
61
|
+
describe "generating the prefix" do
|
62
|
+
let(:reader) { mock(:read => %Q{<label for="user-name">Name</label>}) }
|
63
|
+
let(:writer) { mock("writer") }
|
64
|
+
|
65
|
+
subject { I15R.new(reader, writer, I15R::NullPrinter.new) }
|
66
|
+
|
67
|
+
describe "for a view" do
|
68
|
+
let(:path) { "app/views/users/new.html.erb" }
|
69
|
+
specify do
|
70
|
+
writer.should_receive(:write)
|
71
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>\n})
|
72
|
+
subject.internationalize_file(path)
|
73
|
+
end
|
56
74
|
end
|
57
75
|
|
58
|
-
|
59
|
-
|
76
|
+
describe "for a partial" do
|
77
|
+
let(:path) { "app/views/users/_badge.html.erb" }
|
78
|
+
specify do
|
79
|
+
writer.should_receive(:write)
|
80
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.badge.name", :default => "Name") %></label>\n})
|
81
|
+
subject.internationalize_file(path)
|
82
|
+
end
|
60
83
|
end
|
61
84
|
|
62
|
-
|
63
|
-
|
85
|
+
describe "when there is an explicit prefix" do
|
86
|
+
let(:path) { "app/views/users/_badge.html.erb" }
|
87
|
+
|
88
|
+
subject { I15R.new(reader, writer, I15R::NullPrinter.new, :prefix => "nice") }
|
89
|
+
|
90
|
+
specify do
|
91
|
+
writer.should_receive(:write).with(path, %Q{<label for="user-name"><%= I18n.t("nice.name", :default => "Name") %></label>\n})
|
92
|
+
subject.internationalize_file(path)
|
93
|
+
end
|
64
94
|
end
|
65
95
|
end
|
66
96
|
|
67
|
-
describe "
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
97
|
+
describe "the add_default option" do
|
98
|
+
let(:path) { "app/users/views/index.html.haml" }
|
99
|
+
let(:patter_matcher) { mock("pattern matcher", :run => "") }
|
100
|
+
let(:i15r) { I15R::Fixture.new }
|
101
|
+
|
102
|
+
subject { I15R::Fixture.new }
|
73
103
|
|
74
|
-
describe "
|
104
|
+
describe "when true" do
|
75
105
|
before do
|
76
|
-
|
77
|
-
end
|
78
|
-
it "should not touch any files" do
|
79
|
-
@i15r.should_not_receive(:write_content_to)
|
80
|
-
@i15r.internationalize_file(@file_path)
|
106
|
+
subject.config = { :add_default => true }
|
81
107
|
end
|
82
|
-
|
83
|
-
|
84
|
-
|
108
|
+
specify do
|
109
|
+
I15R::PatternMatcher.should_receive(:new)
|
110
|
+
.with(anything, anything, hash_including(:add_default => true))
|
111
|
+
.and_return(patter_matcher)
|
112
|
+
subject.internationalize_file(path)
|
85
113
|
end
|
86
114
|
end
|
87
115
|
|
88
|
-
describe "
|
116
|
+
describe "when false" do
|
89
117
|
before do
|
90
|
-
|
118
|
+
subject.config = { :add_default => false }
|
91
119
|
end
|
92
|
-
|
93
|
-
|
94
|
-
|
120
|
+
specify do
|
121
|
+
I15R::PatternMatcher.should_receive(:new)
|
122
|
+
.with(anything, anything, hash_including(:add_default => false))
|
123
|
+
.and_return(patter_matcher)
|
124
|
+
subject.internationalize_file(path)
|
95
125
|
end
|
96
126
|
end
|
97
127
|
end
|
98
128
|
|
99
|
-
describe "when no prefix option was given" do
|
100
|
-
it "should correctly internationalize messages using a prefix derived from the path" do
|
101
|
-
message_prefix = "users.new"
|
102
|
-
plain_snippet = <<-EOS
|
103
|
-
<label for="user-name">Name</label>
|
104
|
-
<input type="text" id="user-name" name="user[name]" />
|
105
|
-
EOS
|
106
|
-
i18ned_snippet = <<-EOS
|
107
|
-
<label for="user-name"><%= I18n.t("#{message_prefix}.name") %></label>
|
108
|
-
<input type="text" id="user-name" name="user[name]" />
|
109
|
-
EOS
|
110
|
-
@i15r.sub_plain_strings(plain_snippet, message_prefix, :erb).should == i18ned_snippet
|
111
|
-
end
|
112
|
-
end # "when no prefix option was given"
|
113
|
-
|
114
129
|
describe "when an explicit prefix option was given" do
|
115
130
|
it "should correctly internationalize messages using the prefix" do
|
116
131
|
prefix_option = "mysite"
|
@@ -119,7 +134,7 @@ describe I15R::Base do
|
|
119
134
|
<input type="text" id="user-name" name="user[name]" />
|
120
135
|
EOS
|
121
136
|
i18ned_snippet = <<-EOS
|
122
|
-
<label for="user-name"><%= I18n.t("#{prefix_option}.name") %></label>
|
137
|
+
<label for="user-name"><%= I18n.t("#{prefix_option}.name", :default => "Name") %></label>
|
123
138
|
<input type="text" id="user-name" name="user[name]" />
|
124
139
|
EOS
|
125
140
|
|
@@ -127,17 +142,4 @@ describe I15R::Base do
|
|
127
142
|
end
|
128
143
|
end # "when an explicit prefix option was given"
|
129
144
|
|
130
|
-
describe "when running the internationalization for an ERB file" do
|
131
|
-
before do
|
132
|
-
@i15r.stub!(:write_content_to).and_return(true)
|
133
|
-
@file_path = "app/views/users/new.html.erb"
|
134
|
-
@i15r.stub(:get_content_from).and_return(%q{<label for=\"user-name\">Name</label>})
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should only run ERB matchers" do
|
138
|
-
@i15r.should_receive(:sub_plain_strings).with(anything, anything, :erb)
|
139
|
-
@i15r.internationalize_file(@file_path)
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
145
|
end
|
@@ -1,23 +1,199 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
2
3
|
require 'i15r/pattern_matcher'
|
3
4
|
|
4
|
-
describe I15R::
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
describe I15R::PatternMatcher do
|
6
|
+
|
7
|
+
subject { pattern_matcher }
|
8
|
+
|
9
|
+
describe "in erb templates" do
|
10
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.new", :erb) }
|
11
|
+
|
12
|
+
describe "in tag content" do
|
13
|
+
it { should internationalize('<h1>New flight</h1>')
|
14
|
+
.to('<h1><%= I18n.t("users.new.new_flight") %></h1>') }
|
15
|
+
it { should internationalize(%(<label for="user-name">Name</label>))
|
16
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.name") %></label>)) }
|
17
|
+
|
18
|
+
it { should internationalize(%(<label for="user-name">First name</label>))
|
19
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.first_name") %></label>)) }
|
20
|
+
|
21
|
+
it { should internationalize(%(<label for="user-name">Got friends? A friend's name</label>))
|
22
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.got_friends_a_friends_name") %></label>)) }
|
23
|
+
|
24
|
+
it { should internationalize(%(<label for="user-name">A friend's name:</label>))
|
25
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.a_friends_name") %></label>)) }
|
26
|
+
|
27
|
+
it { should internationalize(%(<label for="user-name"> Name </label>))
|
28
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.name") %></label>)) }
|
29
|
+
|
30
|
+
it { should internationalize(%(<label for="when">Mañana</label>))
|
31
|
+
.to(%(<label for="when"><%= I18n.t("users.new.mañana") %></label>)) }
|
32
|
+
|
33
|
+
describe "when the default option is given" do
|
34
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.new", :erb, :add_default => true) }
|
35
|
+
|
36
|
+
it { should internationalize('<h1>New flight</h1>')
|
37
|
+
.to('<h1><%= I18n.t("users.new.new_flight", :default => "New flight") %></h1>') }
|
38
|
+
it { should internationalize(%( <%= f.label :name %><br />))
|
39
|
+
.to(%( <%= f.label I18n.t("users.new.name", :default => "name") %><br />)) }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "when a line is already international" do
|
43
|
+
it { should internationalize(%( <%= f.label I18n.t("users.new.name") %>)).to_the_same }
|
44
|
+
it { should internationalize(%( <%= f.label t("users.new.name") %>)).to_the_same }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "in tag attributes" do
|
49
|
+
it { should internationalize(%(<a title="site root" href="/"><img src="site_logo.png" /></a>))
|
50
|
+
.to(%(<a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)) }
|
51
|
+
|
52
|
+
it { should internationalize(%(<a title="site root" href="/"><img src="site_logo.png" /></a>))
|
53
|
+
.to(%(<a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)) }
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "Rails helper methods" do
|
57
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.index", :erb) }
|
58
|
+
|
59
|
+
it { should internationalize(%(<p class="highlighted"><%= link_to 'New user', new_user_path %>?</p>))
|
60
|
+
.to(%(<p class="highlighted"><%= link_to I18n.t("users.index.new_user"), new_user_path %>?</p>)) }
|
61
|
+
|
62
|
+
it { should internationalize(%(<p><%= link_to "Create a new user", new_user_path, { :class => "add" } -%></p>))
|
63
|
+
.to(%(<p><%= link_to I18n.t("users.index.create_a_new_user"), new_user_path, { :class => "add" } -%></p>)) }
|
64
|
+
|
65
|
+
it { should internationalize(%(<%= f.label :name, "Name" %>))
|
66
|
+
.to(%(<%= f.label :name, I18n.t("users.index.name") %>)) }
|
67
|
+
|
68
|
+
it { should internationalize(%( <%= f.label :name %><br />))
|
69
|
+
.to(%( <%= f.label I18n.t("users.index.name") %><br />)) }
|
70
|
+
|
71
|
+
it { should internationalize(%( <%= label_tag :name, "Real Name" %><br />))
|
72
|
+
.to(%( <%= label_tag :name, I18n.t("users.index.real_name") %><br />)) }
|
73
|
+
|
74
|
+
it { should internationalize(%(<%= f.submit "Create user" %>))
|
75
|
+
.to(%(<%= f.submit I18n.t("users.index.create_user") %>)) }
|
9
76
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
77
|
+
it { should internationalize(%(<%= submit_tag "Create user" %>))
|
78
|
+
.to(%(<%= submit_tag I18n.t("users.index.create_user") %>)) }
|
79
|
+
|
80
|
+
describe "when the default option is given" do
|
81
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.index", :erb, :add_default => true) }
|
82
|
+
|
83
|
+
it { should internationalize(%(<%= submit_tag "Create user" %>))
|
84
|
+
.to(%(<%= submit_tag I18n.t("users.index.create_user", :default => "Create user") %>)) }
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "when text has non-ascii characters" do
|
88
|
+
it { should internationalize(%(<p class="highlighted"><%= link_to 'Új felhasználó', new_user_path %>?</p>))
|
89
|
+
.to(%(<p class="highlighted"><%= link_to I18n.t("users.index.Új_felhasználó"), new_user_path %>?</p>)) }
|
90
|
+
|
91
|
+
it { should internationalize(%(<p><%= link_to "Új felhasználó létrehozása", new_user_path, { :class => "add" } -%></p>))
|
92
|
+
.to(%(<p><%= link_to I18n.t("users.index.Új_felhasználó_létrehozása"), new_user_path, { :class => "add" } -%></p>)) }
|
93
|
+
|
94
|
+
it { should internationalize(%(<%= f.label :name, "Név" %>))
|
95
|
+
.to(%(<%= f.label :name, I18n.t("users.index.név") %>)) }
|
96
|
+
|
97
|
+
it { should internationalize(%(<%= label_tag :name, "Név" %>))
|
98
|
+
.to(%(<%= label_tag :name, I18n.t("users.index.név") %>)) }
|
99
|
+
|
100
|
+
it { should internationalize(%( <%= label_tag :name, "Real Name" %><br />))
|
101
|
+
.to(%( <%= label_tag :name, I18n.t("users.index.real_name") %><br />)) }
|
102
|
+
|
103
|
+
it { should internationalize(%(<%= f.submit "Új felhasználó" %>))
|
104
|
+
.to(%(<%= f.submit I18n.t("users.index.Új_felhasználó") %>)) }
|
105
|
+
|
106
|
+
it { should internationalize(%(<%= submit_tag "Új felhasználó" %>))
|
107
|
+
.to(%(<%= submit_tag I18n.t("users.index.Új_felhasználó") %>)) }
|
108
|
+
|
109
|
+
it { should internationalize(%(<%= f.submit :create_user %>))
|
110
|
+
.to(%(<%= f.submit I18n.t("users.index.create_user") %>)) }
|
111
|
+
|
112
|
+
it { should internationalize(%( <%= f.submit :create_user %>))
|
113
|
+
.to(%( <%= f.submit I18n.t("users.index.create_user") %>)) }
|
114
|
+
end
|
115
|
+
end
|
14
116
|
end
|
15
117
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
118
|
+
describe "in haml templates" do
|
119
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.show", :haml) }
|
120
|
+
|
121
|
+
it { should internationalize('#main').to_the_same }
|
122
|
+
|
123
|
+
it { should internationalize(%(#form_head My account))
|
124
|
+
.to(%(#form_head= I18n.t("users.show.my_account"))) }
|
125
|
+
|
126
|
+
it { should internationalize(%(%p Please check your inbox and click on the activation link.))
|
127
|
+
.to(%(%p= I18n.t("users.show.please_check_your_inbox_and_click_on_the_activation_link"))) }
|
128
|
+
|
129
|
+
it { should internationalize("please visit").to('= I18n.t("users.show.please_visit")') }
|
130
|
+
it { should internationalize("Mañana").to('= I18n.t("users.show.mañana")') }
|
131
|
+
it { should internationalize("C'est ça").to('= I18n.t("users.show.cest_ça")') }
|
132
|
+
it { should internationalize(%(%p Do not close/reload while loading))
|
133
|
+
.to(%(%p= I18n.t("users.show.do_not_close_reload_while_loading"))) }
|
134
|
+
it { should internationalize(%( .field)).to(%( .field)) }
|
135
|
+
it { should internationalize('%p').to_the_same }
|
136
|
+
it { should internationalize(%(%h2 Resend unlock instructions))
|
137
|
+
.to(%(%h2= I18n.t("users.show.resend_unlock_instructions"))) }
|
138
|
+
it { should internationalize(%(%i (we need your password to confirm your changes)))
|
139
|
+
.to(%(%i= I18n.t("users.show.we_need_your_password_to_confirm_your_changes"))) }
|
140
|
+
it { should internationalize('= yield').to_the_same }
|
141
|
+
it { should internationalize('/ Do not remove the next line').to_the_same }
|
142
|
+
it { should internationalize(%(#form_head Türkçe))
|
143
|
+
.to(%(#form_head= I18n.t("users.show.türkçe"))) }
|
144
|
+
it { should internationalize(%(%p Egy, kettő, három, négy, öt.))
|
145
|
+
.to(%(%p= I18n.t("users.show.egy_kettő_három_négy_öt"))) }
|
146
|
+
it { should internationalize(%(Türkçe)).to(%(= I18n.t("users.show.türkçe"))) }
|
147
|
+
it { should internationalize(%( %h3 Top Scorers))
|
148
|
+
.to(%( %h3= I18n.t("users.show.top_scorers"))) }
|
149
|
+
it { should internationalize(%( %div{ :class => "field option", :style => "float:left" })).to_the_same }
|
150
|
+
it { should internationalize(%( %div{ :class => "field option", :style => "float:left" } Name))
|
151
|
+
.to(%( %div{ :class => "field option", :style => "float:left" }= I18n.t("users.show.name"))) }
|
152
|
+
it { should internationalize(%( %div(class: "field option", style: "float:left") Name))
|
153
|
+
.to(%( %div(class: "field option", style: "float:left")= I18n.t("users.show.name"))) }
|
154
|
+
|
155
|
+
describe "when the default option is given" do
|
156
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.show", :haml, :add_default => true) }
|
157
|
+
it { should internationalize(%( %h3 Top Scorers))
|
158
|
+
.to(%( %h3= I18n.t("users.show.top_scorers", :default => "Top Scorers"))) }
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "when already evaluated" do
|
162
|
+
it { should internationalize(%(%p= link_to 'New user', new_user_path))
|
163
|
+
.to(%(%p= link_to I18n.t("users.show.new_user"), new_user_path)) }
|
164
|
+
it { should internationalize(%(= f.label :password, "Password"))
|
165
|
+
.to(%(= f.label :password, I18n.t("users.show.password"))) }
|
166
|
+
it { should internationalize(%( = f.label :password, "Password"))
|
167
|
+
.to(%( = f.label :password, I18n.t("users.show.password"))) }
|
168
|
+
it { should internationalize(%(%p= link_to 'Új felhasználó', new_user_path))
|
169
|
+
.to(%(%p= link_to I18n.t("users.show.Új_felhasználó"), new_user_path)) }
|
170
|
+
it { should internationalize(%(#new_user_link= link_to 'Új felhasználó', new_user_path))
|
171
|
+
.to(%(#new_user_link= link_to I18n.t("users.show.Új_felhasználó"), new_user_path)) }
|
172
|
+
it { should internationalize(%(= f.label :password, "Contraseña"))
|
173
|
+
.to(%(= f.label :password, I18n.t("users.show.contraseña"))) }
|
174
|
+
it { should internationalize(%( = f.label :password, "Contraseña"))
|
175
|
+
.to(%( = f.label :password, I18n.t("users.show.contraseña"))) }
|
176
|
+
it { should internationalize(%( = f.label :name))
|
177
|
+
.to(%( = f.label I18n.t("users.show.name"))) }
|
178
|
+
|
179
|
+
it { should internationalize(%(= f.submit "Create user"))
|
180
|
+
.to(%(= f.submit I18n.t("users.show.create_user"))) }
|
181
|
+
it { should internationalize(%(= submit_tag "Create user"))
|
182
|
+
.to(%(= submit_tag I18n.t("users.show.create_user"))) }
|
183
|
+
it { should internationalize(%( = f.submit :user_details %>))
|
184
|
+
.to(%( = f.submit I18n.t("users.show.user_details") %>)) }
|
185
|
+
it { should internationalize(%( = submit_tag :user_details %>))
|
186
|
+
.to(%( = submit_tag I18n.t("users.show.user_details") %>)) }
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "evaluated ruby code" do
|
190
|
+
it { should internationalize('- if foo == :bar').to_the_same }
|
191
|
+
end
|
192
|
+
|
193
|
+
describe "when a line is already international" do
|
194
|
+
it { should internationalize(%( = f.label I18n.t("users.new.name") )).to_the_same }
|
195
|
+
it { should internationalize(%( = f.label t("users.new.name") )).to_the_same }
|
196
|
+
end
|
21
197
|
end
|
22
198
|
|
23
199
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,39 @@
|
|
1
|
-
|
1
|
+
current_dir = File.expand_path(File.dirname(__FILE__))
|
2
|
+
$:.unshift File.join(current_dir, "..", "lib")
|
2
3
|
|
3
4
|
require 'i15r'
|
4
|
-
require 'i15r/
|
5
|
+
require 'i15r/file_reader'
|
6
|
+
|
7
|
+
Dir["#{current_dir}/support/**/*.rb"].each do |file|
|
8
|
+
require file
|
9
|
+
end
|
10
|
+
|
11
|
+
class I15R
|
12
|
+
class StringReader
|
13
|
+
def read(path)
|
14
|
+
"norf"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class NullWriter
|
19
|
+
def write(path, content); end
|
20
|
+
end
|
21
|
+
class NullPrinter
|
22
|
+
def print_diff(old_row, new_row); end
|
23
|
+
def println(text); end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Fixture < I15R
|
27
|
+
def initialize(reader=StringReader.new,
|
28
|
+
writer=NullWriter.new,
|
29
|
+
printer=NullPrinter.new,
|
30
|
+
config={})
|
31
|
+
super(reader, writer, printer, config)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.with_config(config)
|
35
|
+
new(StringReader.new, NullWriter.new, NullPrinter.new, config)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|