diff --git a/spec/unit/virtus/typecast/string/class_methods/to_boolean_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_boolean_spec.rb index ec0d6376..68250f49 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_boolean_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_boolean_spec.rb @@ -1,24 +1,29 @@ require 'spec_helper' describe Virtus::Typecast::String, '.to_boolean' do - subject { described_class.to_boolean(string) } + subject { object.to_boolean(string) } - described_class::TRUE_VALUES.each do |value| + let(:object) { described_class } + + %w[ 1 t true T TRUE ].each do |value| context "with #{value.inspect}" do let(:string) { value } + it { should be(true) } end end - described_class::FALSE_VALUES.each do |value| + %w[ 0 f false F FALSE ].each do |value| context "with #{value.inspect}" do let(:string) { value } + it { should be(false) } end end - context 'with an unknown string' do - let(:string) { 'something' } - it { should == string } + context 'with an invalid boolean string' do + let(:string) { 'non-boolean' } + + it { should equal(string) } end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_date_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_date_spec.rb index c20953f2..1e4319d7 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_date_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_date_spec.rb @@ -1,7 +1,9 @@ require 'spec_helper' describe Virtus::Typecast::String, '.to_date' do - subject { described_class.to_date(string) } + subject { object.to_date(string) } + + let(:object) { described_class } context 'with a valid date string' do let(:string) { "July, 22th, 2011" } @@ -15,6 +17,7 @@ context 'with an invalid date string' do let(:string) { 'non-date' } - it { should == string } + + it { should equal(string) } end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_datetime_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_datetime_spec.rb index 71024c96..62ec6848 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_datetime_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_datetime_spec.rb @@ -1,7 +1,9 @@ require 'spec_helper' describe Virtus::Typecast::String, '.to_datetime' do - subject { described_class.to_datetime(string) } + subject { object.to_datetime(string) } + + let(:object) { described_class } shared_examples_for 'a correct datetime object' do it { should be_instance_of(DateTime) } @@ -43,6 +45,6 @@ context 'with an invalid date time string' do let(:string) { 'non-datetime' } - it { should == string } + it { should equal(string) } end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_decimal_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_decimal_spec.rb index f2074408..95a2a9ee 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_decimal_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_decimal_spec.rb @@ -1,10 +1,23 @@ require 'spec_helper' describe Virtus::Typecast::String, '.to_decimal' do - subject { described_class.to_decimal(string) } + subject { object.to_decimal(string) } - let(:string) { '1.0' } - let(:decimal) { BigDecimal('1.0') } + let(:object) { described_class } - it { should == decimal } + { '1' => BigDecimal('1.0'), '1.0' => BigDecimal('1.0'), '.1' => BigDecimal('0.1') }.each do |value, expected| + context "with #{value.inspect}" do + let(:string) { value } + + it { should be_instance_of(BigDecimal) } + + it { should eql(expected) } + end + end + + context 'with an invalid decimal string' do + let(:string) { 'non-decimal' } + + it { should equal(string) } + end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_float_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_float_spec.rb index c8389d4c..6cbe0cf9 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_float_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_float_spec.rb @@ -3,8 +3,19 @@ describe Virtus::Typecast::String, '.to_float' do subject { described_class.to_float(string) } - let(:string) { '1' } - let(:float) { 1.0 } + { '1' => 1.0, '1.0' => 1.0, '.1' => 0.1 }.each do |value, expected| + context "with #{value.inspect}" do + let(:string) { value } - it { should == float } + it { should be_instance_of(Float) } + + it { should eql(expected) } + end + end + + context 'with an invalid float string' do + let(:string) { 'non-float' } + + it { should equal(string) } + end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_integer_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_integer_spec.rb index c212c602..722197ce 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_integer_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_integer_spec.rb @@ -3,8 +3,19 @@ describe Virtus::Typecast::String, '.to_integer' do subject { described_class.to_integer(string) } - let(:string) { '1.0' } - let(:integer) { 1 } + { '1' => 1, '1.0' => 1, '.1' => 0 }.each do |value, expected| + context "with #{value.inspect}" do + let(:string) { value } - it { should == integer } + it { should be_kind_of(Integer) } + + it { should eql(expected) } + end + end + + context 'with an invalid integer string' do + let(:string) { 'non-integer' } + + it { should equal(string) } + end end diff --git a/spec/unit/virtus/typecast/string/class_methods/to_time_spec.rb b/spec/unit/virtus/typecast/string/class_methods/to_time_spec.rb index 2d1c8a88..d854171d 100644 --- a/spec/unit/virtus/typecast/string/class_methods/to_time_spec.rb +++ b/spec/unit/virtus/typecast/string/class_methods/to_time_spec.rb @@ -1,7 +1,9 @@ require 'spec_helper' describe Virtus::Typecast::String, '.to_time' do - subject { described_class.to_time(string) } + subject { object.to_time(string) } + + let(:object) { described_class } shared_examples_for 'a correct time object' do it { should be_instance_of(Time) } @@ -43,6 +45,6 @@ context 'with an invalid date time string' do let(:string) { '2999' } - it { should == string } + it { should equal(string) } end end diff --git a/virtus.gemspec b/virtus.gemspec index cf9574cb..e04aa18b 100644 --- a/virtus.gemspec +++ b/virtus.gemspec @@ -128,6 +128,7 @@ Gem::Specification.new do |s| "spec/unit/virtus/typecast/hash/class_methods/to_date_spec.rb", "spec/unit/virtus/typecast/hash/class_methods/to_datetime_spec.rb", "spec/unit/virtus/typecast/hash/class_methods/to_time_spec.rb", + "spec/unit/virtus/typecast/object/class_methods/method_missing.rb", "spec/unit/virtus/typecast/object/class_methods/method_missing_spec.rb", "spec/unit/virtus/typecast/string/class_methods/to_boolean_spec.rb", "spec/unit/virtus/typecast/string/class_methods/to_date_spec.rb",