amount_field 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,15 @@
1
+ == 1.4.1 2010-04-23
2
+
3
+ * Method amount_field considers given option "name" and "id":
4
+ <% form_for(@manager) do |f| %>
5
+ <%= f.amount_field :salary, :name => :salary, :id => "salary_id" %>
6
+ ...
7
+ =>
8
+ <input name="salary" id="salary_id" ... /> instead of
9
+ <input name="manager[amount_field_value]" id="manager_salary"... />
10
+ * fix: display invalid value in current format (e.g. in german format: "-0,1" or "12,34"
11
+ and not "-0.1" and "12.34").
12
+
1
13
  == 1.4.0 2009-10-06
2
14
 
3
15
  * fix: negative values like '-1,00', '-1,0', '-1,' or '-1' are considered valid
data/Manifest CHANGED
@@ -3,6 +3,7 @@ MIT-LICENSE
3
3
  Manifest
4
4
  README.rdoc
5
5
  Rakefile
6
+ amount_field.gemspec
6
7
  init.rb
7
8
  install.rb
8
9
  lib/amount_field.rb
data/README.rdoc CHANGED
@@ -9,12 +9,12 @@ Drop me a line if you encounter problems.
9
9
 
10
10
  As Gem:
11
11
 
12
- $ gem sources -a http://gems.github.com (you only have to do this once)
13
- $ sudo gem install thomasbaustert-amount_field
12
+ $ gem sources -a http://gemcutter.org/ (you only have to do this once)
13
+ $ sudo gem install amount_field
14
14
 
15
15
  As plugin:
16
16
 
17
- $ script/plugin install git://github.com/thomasbaustert/amount_field.git
17
+ $ script/plugin install git://github.com/thomasbaustert/amount_field.git -r 2.3
18
18
 
19
19
  == Example
20
20
 
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('amount_field', '1.4.0') do |p|
5
+ Echoe.new('amount_field', '1.4.1') do |p|
6
6
  p.description = "Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56"
7
7
  p.url = "http://github.com/thomasbaustert/amount_field"
8
8
  p.author = "Thomas Baustert"
data/amount_field.gemspec CHANGED
@@ -2,20 +2,20 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{amount_field}
5
- s.version = "1.4.0"
5
+ s.version = "1.4.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Thomas Baustert"]
9
- s.date = %q{2009-10-06}
9
+ s.date = %q{2010-04-23}
10
10
  s.description = %q{Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56}
11
11
  s.email = %q{ business@thomasbaustert.de}
12
12
  s.extra_rdoc_files = ["README.rdoc", "lib/amount_field.rb", "lib/amount_field/configuration.rb", "lib/amount_field/form_helper.rb", "lib/amount_field/form_tag_helper.rb", "lib/amount_field/validations.rb"]
13
- s.files = ["History.txt", "MIT-LICENSE", "Manifest", "README.rdoc", "Rakefile", "init.rb", "install.rb", "lib/amount_field.rb", "lib/amount_field/configuration.rb", "lib/amount_field/form_helper.rb", "lib/amount_field/form_tag_helper.rb", "lib/amount_field/validations.rb", "locale/de.yml", "locale/en.yml", "test/form_helper_test.rb", "test/form_tag_helper_test.rb", "test/models/test_product.rb", "test/test_helper.rb", "test/validations_test.rb", "uninstall.rb", "amount_field.gemspec"]
13
+ s.files = ["History.txt", "MIT-LICENSE", "Manifest", "README.rdoc", "Rakefile", "amount_field.gemspec", "init.rb", "install.rb", "lib/amount_field.rb", "lib/amount_field/configuration.rb", "lib/amount_field/form_helper.rb", "lib/amount_field/form_tag_helper.rb", "lib/amount_field/validations.rb", "locale/de.yml", "locale/en.yml", "test/form_helper_test.rb", "test/form_tag_helper_test.rb", "test/models/test_product.rb", "test/test_helper.rb", "test/validations_test.rb", "uninstall.rb"]
14
14
  s.homepage = %q{http://github.com/thomasbaustert/amount_field}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Amount_field", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{amount_field}
18
- s.rubygems_version = %q{1.3.5}
18
+ s.rubygems_version = %q{1.3.6}
19
19
  s.summary = %q{Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56}
20
20
  s.test_files = ["test/form_helper_test.rb", "test/form_tag_helper_test.rb", "test/models/test_product.rb", "test/test_helper.rb", "test/validations_test.rb"]
21
21
 
@@ -1,6 +1,9 @@
1
1
  module AmountField #:nodoc:
2
2
  module Helpers #:nodoc:
3
3
 
4
+ #TODO/2010-04-23/tb remove redundant code
5
+ # using @template.amount_field(object, method, options) !?
6
+
4
7
  module FormHelper #:nodoc:
5
8
 
6
9
  include ActionView::Helpers::NumberHelper
@@ -11,15 +14,16 @@ module AmountField #:nodoc:
11
14
  format_options.merge!(options.delete(:format) || {})
12
15
 
13
16
  object = options.delete(:object) || instance_variable_get("@#{object_name}")
14
-
17
+
15
18
  # if no explicit value is given, we set a formatted one. In case of an error we take the
16
19
  # original value inserted by the user.
17
20
  unless object.errors.on(method)
18
21
  options[:value] ||= number_with_precision(object.send(method), format_options)
19
22
  else
20
- options[:value] ||= object.send("#{method}_before_type_cast")
23
+ options[:value] ||= object.send("#{AmountField::Configuration.prefix}_#{method}") || object.send("#{method}_before_type_cast")
21
24
  end
22
- options[:name] = "#{object_name}[#{AmountField::Configuration.prefix}_#{method}]"
25
+
26
+ options[:name] ||= "#{object_name}[#{AmountField::Configuration.prefix}_#{method}]"
23
27
  options[:class] = "#{options[:class]} #{AmountField::Configuration.css_class}"
24
28
  options[:id] ||= "#{object_name}_#{method}"
25
29
 
@@ -33,7 +37,6 @@ module AmountField #:nodoc:
33
37
  include ActionView::Helpers::NumberHelper
34
38
 
35
39
  def amount_field(method, options = {})
36
- #todo try to remove redundant code by using: @template.amount_field(object, method, options)
37
40
  format_options = I18n.t(:'number.amount_field.format', :raise => true) rescue {}
38
41
  format_options = format_options.merge(AmountField::ActiveRecord::Validations.configuration)
39
42
  format_options.merge!(options.delete(:format) || {})
@@ -41,16 +44,18 @@ module AmountField #:nodoc:
41
44
  if (explicit_object = options.delete(:object))
42
45
  self.object = explicit_object
43
46
  end
44
-
47
+
45
48
  # if no explicit value is given, we set a formatted one. In case of an error we take the
46
49
  # original value inserted by the user.
47
50
  unless object.errors.on(method)
48
51
  options[:value] ||= number_with_precision(object.send(method), format_options)
49
52
  else
50
- options[:value] ||= object.send("#{method}_before_type_cast")
53
+ options[:value] ||= object.send("#{AmountField::Configuration.prefix}_#{method}") || object.send("#{method}_before_type_cast")
51
54
  end
52
- options[:name] = "#{object_name}[#{AmountField::Configuration.prefix}_#{method}]"
55
+
56
+ options[:name] ||= "#{object_name}[#{AmountField::Configuration.prefix}_#{method}]"
53
57
  options[:class] = "#{options[:class]} #{AmountField::Configuration.css_class}"
58
+ options[:id] ||= "#{object_name}_#{method}"
54
59
 
55
60
  text_field(method, options)
56
61
  end
@@ -197,6 +197,74 @@ class FormHelperTest < ActionView::TestCase
197
197
  assert_dom_equal expected_form, output_buffer
198
198
  end
199
199
 
200
+ test "consider option name if given" do
201
+ @test_product = TestProduct.new(:amount_field_price => "47.11")
202
+ form_for(:test_product, @test_product, :builder => MyFormBuilder) do |f|
203
+ concat f.amount_field(:price, :name => 'article')
204
+ end
205
+
206
+ expected_input =
207
+ "<input name='article' size='30'" +
208
+ " class=' amount_field' type='text' id='test_product_price' value='47.11' />"
209
+ expected_form =
210
+ "<form action='http://www.example.com' method='post'>#{expected_input}</form>"
211
+
212
+ assert_dom_equal expected_input, amount_field(:test_product, :price, :name => 'article', :value => 47.11)
213
+ assert_dom_equal expected_form, output_buffer
214
+ end
215
+
216
+ test "consider option id if given" do
217
+ @test_product = TestProduct.new(:amount_field_price => "63.41")
218
+ form_for(:test_product, @test_product, :builder => MyFormBuilder) do |f|
219
+ concat f.amount_field(:price, :name => 'article', :id => 'my_id')
220
+ end
221
+
222
+ expected_input =
223
+ "<input name='article' size='30'" +
224
+ " class=' amount_field' type='text' id='my_id' value='63.41' />"
225
+ expected_form =
226
+ "<form action='http://www.example.com' method='post'>#{expected_input}</form>"
227
+
228
+ assert_dom_equal expected_input, amount_field(:test_product, :price, :name => 'article', :id => 'my_id', :value => 63.41)
229
+ assert_dom_equal expected_form, output_buffer
230
+ end
231
+
232
+ test "invalid negative value is displayed with current format options" do
233
+ with_locale('de') do
234
+ class MyTestProduct < ActiveRecord::Base
235
+ set_table_name 'test_products'
236
+ validates_amount_format_of :price
237
+ validates_numericality_of :price, :greater_than_or_equal_to => 0.0
238
+ end
239
+ @test_product = MyTestProduct.new(:amount_field_price => "-0,1")
240
+ @test_product.valid?
241
+
242
+ form_for(:test_product, @test_product, :builder => MyFormBuilder) do |f|
243
+ concat f.amount_field(:price)
244
+ end
245
+
246
+ assert_match /value="-0,1"/, output_buffer
247
+ end
248
+ end
249
+
250
+ test "invalid positive value is displayed with current format options" do
251
+ with_locale('de') do
252
+ class MyTestProduct < ActiveRecord::Base
253
+ set_table_name 'test_products'
254
+ validates_amount_format_of :price
255
+ validates_numericality_of :price, :less_than_or_equal_to => 10.0
256
+ end
257
+ @test_product = MyTestProduct.new(:amount_field_price => "12,34")
258
+ @test_product.valid?
259
+
260
+ form_for(:test_product, @test_product, :builder => MyFormBuilder) do |f|
261
+ concat f.amount_field(:price)
262
+ end
263
+
264
+ assert_match /value="12,34"/, output_buffer
265
+ end
266
+ end
267
+
200
268
  protected
201
269
 
202
270
  def protect_against_forgery?
@@ -371,7 +371,7 @@ class ValidationsTest < ActiveSupport::TestCase
371
371
  end
372
372
  end
373
373
 
374
- test "something interesting" do
374
+ test "another validation macro validates the converted value" do
375
375
  class TestProductWithOtherValidationMacros < ActiveRecord::Base
376
376
  set_table_name 'test_products'
377
377
  validates_amount_format_of :price
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amount_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 4
8
+ - 1
9
+ version: 1.4.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Thomas Baustert
@@ -9,7 +14,7 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-10-06 00:00:00 +02:00
17
+ date: 2010-04-23 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
@@ -32,6 +37,7 @@ files:
32
37
  - Manifest
33
38
  - README.rdoc
34
39
  - Rakefile
40
+ - amount_field.gemspec
35
41
  - init.rb
36
42
  - install.rb
37
43
  - lib/amount_field.rb
@@ -47,7 +53,6 @@ files:
47
53
  - test/test_helper.rb
48
54
  - test/validations_test.rb
49
55
  - uninstall.rb
50
- - amount_field.gemspec
51
56
  has_rdoc: true
52
57
  homepage: http://github.com/thomasbaustert/amount_field
53
58
  licenses: []
@@ -66,18 +71,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
71
  requirements:
67
72
  - - ">="
68
73
  - !ruby/object:Gem::Version
74
+ segments:
75
+ - 0
69
76
  version: "0"
70
- version:
71
77
  required_rubygems_version: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
74
80
  - !ruby/object:Gem::Version
81
+ segments:
82
+ - 1
83
+ - 2
75
84
  version: "1.2"
76
- version:
77
85
  requirements: []
78
86
 
79
87
  rubyforge_project: amount_field
80
- rubygems_version: 1.3.5
88
+ rubygems_version: 1.3.6
81
89
  signing_key:
82
90
  specification_version: 3
83
91
  summary: Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56