active_attr 0.5.0.alpha2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of active_attr might be problematic. Click here for more details.

Files changed (30) hide show
  1. data/.rvmrc +29 -3
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +14 -1
  4. data/Gemfile +2 -1
  5. data/README.md +21 -14
  6. data/lib/active_attr/chainable_initialization.rb +2 -2
  7. data/lib/active_attr/matchers/have_attribute_matcher.rb +84 -22
  8. data/lib/active_attr/model.rb +2 -0
  9. data/lib/active_attr/query_attributes.rb +1 -2
  10. data/lib/active_attr/typecasted_attributes.rb +22 -6
  11. data/lib/active_attr/typecasting.rb +19 -7
  12. data/lib/active_attr/typecasting/big_decimal_typecaster.rb +36 -0
  13. data/lib/active_attr/typecasting/boolean.rb +2 -0
  14. data/lib/active_attr/typecasting/boolean_typecaster.rb +26 -4
  15. data/lib/active_attr/typecasting/date_time_typecaster.rb +19 -2
  16. data/lib/active_attr/typecasting/date_typecaster.rb +18 -2
  17. data/lib/active_attr/typecasting/float_typecaster.rb +18 -2
  18. data/lib/active_attr/typecasting/integer_typecaster.rb +19 -2
  19. data/lib/active_attr/typecasting/object_typecaster.rb +16 -0
  20. data/lib/active_attr/typecasting/string_typecaster.rb +18 -2
  21. data/lib/active_attr/version.rb +1 -1
  22. data/spec/functional/active_attr/matchers/have_attribute_matcher_spec.rb +364 -0
  23. data/spec/functional/active_attr/model_spec.rb +6 -0
  24. data/spec/functional/active_attr/typecasted_attributes_spec.rb +18 -8
  25. data/spec/unit/active_attr/matchers/have_attribute_matcher_spec.rb +19 -144
  26. data/spec/unit/active_attr/matchers_spec.rb +23 -0
  27. data/spec/unit/active_attr/typecasting/big_decimal_typecaster_spec.rb +39 -0
  28. data/spec/unit/active_attr/typecasting/date_time_typecaster_spec.rb +3 -2
  29. data/spec/unit/active_attr/typecasting_spec.rb +5 -0
  30. metadata +30 -20
@@ -11,6 +11,7 @@ module ActiveAttr
11
11
 
12
12
  attribute :first_name
13
13
  attribute :last_name
14
+ attribute :age, :type => Integer
14
15
 
15
16
  attr_protected :last_name
16
17
 
@@ -84,6 +85,11 @@ module ActiveAttr
84
85
  model_class.human_attribute_name(:first_name).should == "First name"
85
86
  end
86
87
 
88
+ it "typecasts attributes" do
89
+ subject.age = "29"
90
+ subject.age.should eql 29
91
+ end
92
+
87
93
  context "attribute defaults" do
88
94
  let :model_class do
89
95
  Class.new do
@@ -1,6 +1,5 @@
1
1
  require "spec_helper"
2
2
  require "active_attr/typecasted_attributes"
3
- require "active_attr/mass_assignment"
4
3
 
5
4
  module ActiveAttr
6
5
  describe TypecastedAttributes do
@@ -11,13 +10,14 @@ module ActiveAttr
11
10
  include TypecastedAttributes
12
11
 
13
12
  attribute :typeless
14
- attribute :object, :type => Object
15
- attribute :boolean, :type => Typecasting::Boolean
16
- attribute :date, :type => Date
17
- attribute :date_time, :type => DateTime
18
- attribute :float, :type => Float
19
- attribute :integer, :type => Integer
20
- attribute :string, :type => String
13
+ attribute :object, :type => Object
14
+ attribute :big_decimal, :type => BigDecimal
15
+ attribute :boolean, :type => Typecasting::Boolean
16
+ attribute :date, :type => Date
17
+ attribute :date_time, :type => DateTime
18
+ attribute :float, :type => Float
19
+ attribute :integer, :type => Integer
20
+ attribute :string, :type => String
21
21
  end
22
22
  end
23
23
 
@@ -32,6 +32,11 @@ module ActiveAttr
32
32
  subject.object.should be_nil
33
33
  end
34
34
 
35
+ it "a BigDecimal attribute returns nil" do
36
+ subject.big_decimal = nil
37
+ subject.big_decimal.should be_nil
38
+ end
39
+
35
40
  it "a Boolean attribute returns nil" do
36
41
  subject.boolean = nil
37
42
  subject.boolean.should be_nil
@@ -76,6 +81,11 @@ module ActiveAttr
76
81
  subject.object.should equal value
77
82
  end
78
83
 
84
+ it "a BigDecimal attribute returns a BigDecimal" do
85
+ subject.big_decimal = "1.1"
86
+ subject.big_decimal.should eql BigDecimal.new("1.1")
87
+ end
88
+
79
89
  it "a Boolean attribute returns a Boolean" do
80
90
  subject.boolean = "false"
81
91
  subject.boolean.should eql false
@@ -1,84 +1,37 @@
1
1
  require "spec_helper"
2
- require "active_attr/attributes"
3
2
  require "active_attr/matchers/have_attribute_matcher"
4
3
 
5
4
  module ActiveAttr
6
- describe Matchers do
7
- let(:dsl) { Object.new.extend described_class }
8
- subject { dsl }
9
-
10
- it { should respond_to(:have_attribute).with(1).argument }
11
-
12
- describe "#have_attribute" do
13
- subject { dsl.have_attribute(:first_name) }
14
-
15
- it "builds a HaveAttributeMatcher" do
16
- should be_a_kind_of Matchers::HaveAttributeMatcher
17
- end
18
-
19
- it "uses the given attribute name to construct the matcher" do
20
- subject.send(:attribute_name).should == :first_name
21
- end
22
- end
23
- end
24
-
25
5
  module Matchers
26
6
  describe HaveAttributeMatcher do
27
- let :model_class do
28
- Class.new do
29
- include Attributes
30
- attribute :first_name, :default => "John"
31
- attribute :last_name
32
- attribute :admin, :default => false
33
-
34
- def self.to_s
35
- "Person"
36
- end
37
- end
7
+ describe ".class" do
8
+ it { described_class.should respond_to(:new).with(1).argument }
38
9
  end
39
10
 
40
- subject { positive_matcher }
41
- let(:positive_matcher) { described_class.new(:first_name) }
42
- let(:negative_matcher) { described_class.new(:age) }
43
- let(:positive_matcher_with_default) { described_class.new(:first_name).with_default_value_of("John") }
44
- let(:positive_matcher_with_false_default) { described_class.new(:admin).with_default_value_of(false) }
45
- let(:negative_matcher_with_wrong_default) { described_class.new(:first_name).with_default_value_of("Doe") }
46
- let(:negative_matcher_with_default_no_attribute) { described_class.new(:age).with_default_value_of(21) }
47
- let(:negative_matcher_with_nil_default) { described_class.new(:first_name).with_default_value_of(nil) }
48
-
49
- it { described_class.should respond_to(:new).with(1).argument }
50
-
51
11
  describe "#description" do
52
12
  it "returns a description appropriate to the expectation" do
53
- subject.description.should == "have attribute named first_name"
13
+ described_class.new(:first_name).description.should == "has attribute named first_name"
54
14
  end
55
15
 
56
16
  it "mentions the default value if set" do
57
- positive_matcher_with_default.description.should == %{have attribute named first_name with a default value of "John"}
17
+ described_class.new(:first_name).with_default_value_of("John").description.should == %{has attribute named first_name with a default value of "John"}
58
18
  end
59
19
 
60
- it "mentions the default value if set to false" do
61
- positive_matcher_with_false_default.description.should == %{have attribute named admin with a default value of false}
20
+ it "mentions the default value if set to nil" do
21
+ described_class.new(:first_name).with_default_value_of(nil).description.should == %{has attribute named first_name with a default value of nil}
62
22
  end
63
- end
64
23
 
65
- describe "#failure_message" do
66
- it "returns a failure message appropriate to the expectation and subject" do
67
- negative_matcher.tap do |matcher|
68
- matcher.matches? model_class
69
- end.failure_message.should == "Expected Person to have attribute named age"
24
+ it "mentions the default value if set to false" do
25
+ described_class.new(:admin).with_default_value_of(false).description.should == %{has attribute named admin with a default value of false}
70
26
  end
71
27
 
72
- it "mentions the default value if set" do
73
- negative_matcher_with_wrong_default.tap do |matcher|
74
- matcher.matches? model_class
75
- end.failure_message.should == %{Expected Person to have attribute named first_name with a default value of "Doe"}
28
+ it "mentions the type if set" do
29
+ described_class.new(:first_name).of_type(String).description.should == %{has attribute named first_name of type String}
76
30
  end
77
31
 
78
- it "mentions the default value if set to false" do
79
- negative_matcher_with_nil_default.tap do |matcher|
80
- matcher.matches? model_class
81
- end.failure_message.should == %{Expected Person to have attribute named first_name with a default value of nil}
32
+ it "mentions both the type and default if both are set" do
33
+ description = described_class.new(:first_name).of_type(String).with_default_value_of("John").description
34
+ description.should == %{has attribute named first_name of type String with a default value of "John"}
82
35
  end
83
36
  end
84
37
 
@@ -88,93 +41,15 @@ module ActiveAttr
88
41
  end
89
42
  end
90
43
 
91
- describe "#matches?" do
92
- let(:model_instance) { model_class.new }
93
-
94
- it "is true with an instance of a model class that has the attribute" do
95
- positive_matcher.matches?(model_instance).should be_true
96
- end
97
-
98
- it "is true with a model class that has the attribute" do
99
- positive_matcher.matches?(model_class).should be_true
100
- end
101
-
102
- it "is false with an instance of a model class that does not have the attribute" do
103
- negative_matcher.matches?(model_instance).should be_false
104
- end
105
-
106
- it "is false with a model class that does not have the attribute" do
107
- negative_matcher.matches?(model_class).should be_false
108
- end
109
-
110
- context "when the matcher specifies a default value" do
111
- it "is true with an instance of a model class that has the attribute with the default value" do
112
- positive_matcher_with_default.matches?(model_class).should be_true
113
- end
114
-
115
- it "is true with a model class that has the attribute with the default value" do
116
- positive_matcher_with_default.matches?(model_class).should be_true
117
- end
118
-
119
- it "is false with an instance of a model class that does not have the attribute" do
120
- negative_matcher_with_default_no_attribute.matches?(model_instance).should be_false
121
- end
122
-
123
- it "is false with a model class that does not have the attribute" do
124
- negative_matcher_with_default_no_attribute.matches?(model_class).should be_false
125
- end
126
-
127
- it "is false with an instance of a model class that has the attribute but not with the specified default value" do
128
- negative_matcher_with_wrong_default.matches?(model_instance).should be_false
129
- end
130
-
131
- it "is false with a model class that has the attribute but not with the specified default value" do
132
- negative_matcher_with_wrong_default.matches?(model_class).should be_false
133
- end
134
-
135
- it "is true with an instance of a model class that has the attribute with the default value of false" do
136
- positive_matcher_with_false_default.matches?(model_class).should be_true
137
- end
138
-
139
- it "is true with a model class that has the attribute with the default value where the default value is false" do
140
- positive_matcher_with_false_default.matches?(model_class).should be_true
141
- end
142
-
143
- it "is true with an instance of a model class that has the attribute with the default value where the default value is false" do
144
- positive_matcher_with_false_default.matches?(model_class).should be_true
145
- end
146
-
147
- it "is true with a model class that has the attribute with the default value false" do
148
- positive_matcher_with_false_default.matches?(model_class).should be_true
149
- end
150
-
151
- it "is false with an instance of a model class that has the attribute but not with the specified default value where the specified default value is nil" do
152
- negative_matcher_with_nil_default.matches?(model_instance).should be_false
153
- end
154
-
155
- it "is false with a model class that has the attribute but not with the specified default value where the specified default value is nil" do
156
- negative_matcher_with_nil_default.matches?(model_class).should be_false
157
- end
44
+ describe "#of_type" do
45
+ it "chains" do
46
+ described_class.new(:first_name).of_type(String).should be_a_kind_of described_class
158
47
  end
159
48
  end
160
49
 
161
- describe "#negative_failure_message" do
162
- it "returns a failure message appropriate to the expectation and subject" do
163
- positive_matcher.tap do |matcher|
164
- matcher.matches? model_class
165
- end.negative_failure_message.should == "Expected Person to not have attribute named first_name"
166
- end
167
-
168
- it "mentions the default value if set" do
169
- positive_matcher_with_default.tap do |matcher|
170
- matcher.matches? model_class
171
- end.negative_failure_message.should == %{Expected Person to not have attribute named first_name with a default value of "John"}
172
- end
173
-
174
- it "mentions the default value if set to false" do
175
- positive_matcher_with_false_default.tap do |matcher|
176
- matcher.matches? model_class
177
- end.negative_failure_message.should == %{Expected Person to not have attribute named admin with a default value of false}
50
+ describe "#with_default_value_of" do
51
+ it "chains" do
52
+ described_class.new(:first_name).with_default_value_of(nil).should be_a_kind_of described_class
178
53
  end
179
54
  end
180
55
  end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require "active_attr/matchers"
3
+
4
+ module ActiveAttr
5
+ describe Matchers do
6
+ let(:dsl) { Object.new.extend described_class }
7
+ subject { dsl }
8
+
9
+ it { should respond_to(:have_attribute).with(1).argument }
10
+
11
+ describe "#have_attribute" do
12
+ subject { dsl.have_attribute(:first_name) }
13
+
14
+ it "builds a HaveAttributeMatcher" do
15
+ should be_a_kind_of Matchers::HaveAttributeMatcher
16
+ end
17
+
18
+ it "uses the given attribute name to construct the matcher" do
19
+ subject.send(:attribute_name).should == :first_name
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+ require "active_attr/typecasting/big_decimal_typecaster"
3
+
4
+ module ActiveAttr
5
+ module Typecasting
6
+ describe BigDecimalTypecaster do
7
+ describe "#call" do
8
+ it "returns the original BigDecimal for a BigDecimal" do
9
+ value = BigDecimal.new("2.0")
10
+ subject.call(value).should equal value
11
+ end
12
+
13
+ it "casts nil to a zero BigDecimal" do
14
+ subject.call(nil).should eql BigDecimal.new("0.0")
15
+ end
16
+
17
+ it "casts a numeric String to a BigDecimal" do
18
+ subject.call("2").should eql BigDecimal.new("2.0")
19
+ end
20
+
21
+ it "casts a alpha String to a zero BigDecimal" do
22
+ subject.call("bob").should eql BigDecimal.new("0.0")
23
+ end
24
+
25
+ it "casts a Rational to a BigDecimal" do
26
+ subject.call(Rational(1, 2)).should eql BigDecimal.new("0.5")
27
+ end
28
+
29
+ it "casts a Float to a BigDecimal" do
30
+ subject.call(1.2).should eql BigDecimal.new("1.2")
31
+ end
32
+
33
+ it "cases an Integer to a BigDecimal" do
34
+ subject.call(2).should eql BigDecimal.new("2.0")
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -27,8 +27,9 @@ module ActiveAttr
27
27
  end
28
28
 
29
29
  it "casts a local Time to a DateTime with a matching offset" do
30
- result = subject.call(Time.local(2012, 1, 1, 12, 0, 0))
31
- result.should eql DateTime.new(2012, 1, 1, 12, 0, 0, Rational(Time.now.utc_offset, 86400))
30
+ value = Time.local(2012, 1, 1, 12, 0, 0)
31
+ result = subject.call(value)
32
+ result.should eql DateTime.new(2012, 1, 1, 12, 0, 0, Rational(value.utc_offset, 86400))
32
33
  result.should be_instance_of DateTime
33
34
  end
34
35
 
@@ -48,6 +48,11 @@ module ActiveAttr
48
48
  subject { model.typecast_value(type, value) }
49
49
  let(:value) { mock }
50
50
 
51
+ it "calls BigDecimalTypecaster when typecasting to BigDecimal" do
52
+ Typecasting::BigDecimalTypecaster.any_instance.should_receive(:call).with(value)
53
+ model.typecast_value(BigDecimal, value)
54
+ end
55
+
51
56
  it "calls BooleanTypecaster when typecasting to Boolean" do
52
57
  Typecasting::BooleanTypecaster.any_instance.should_receive(:call).with(value)
53
58
  model.typecast_value(Typecasting::Boolean, value)
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_attr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.alpha2
5
- prerelease: 6
4
+ version: 0.5.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Chris Griego
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-02 00:00:00.000000000Z
13
+ date: 2012-03-12 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
- requirement: &70095293529660 !ruby/object:Gem::Requirement
17
+ requirement: &70109482810160 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -25,10 +25,10 @@ dependencies:
25
25
  version: '4.1'
26
26
  type: :runtime
27
27
  prerelease: false
28
- version_requirements: *70095293529660
28
+ version_requirements: *70109482810160
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: activesupport
31
- requirement: &70095293527620 !ruby/object:Gem::Requirement
31
+ requirement: &70109482808160 !ruby/object:Gem::Requirement
32
32
  none: false
33
33
  requirements:
34
34
  - - ! '>='
@@ -39,10 +39,10 @@ dependencies:
39
39
  version: '4.1'
40
40
  type: :runtime
41
41
  prerelease: false
42
- version_requirements: *70095293527620
42
+ version_requirements: *70109482808160
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: bundler
45
- requirement: &70095293526420 !ruby/object:Gem::Requirement
45
+ requirement: &70109482806600 !ruby/object:Gem::Requirement
46
46
  none: false
47
47
  requirements:
48
48
  - - ~>
@@ -50,10 +50,10 @@ dependencies:
50
50
  version: '1.0'
51
51
  type: :development
52
52
  prerelease: false
53
- version_requirements: *70095293526420
53
+ version_requirements: *70109482806600
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: factory_girl
56
- requirement: &70095293525540 !ruby/object:Gem::Requirement
56
+ requirement: &70109482805800 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
59
  - - ~>
@@ -61,10 +61,10 @@ dependencies:
61
61
  version: '2.2'
62
62
  type: :development
63
63
  prerelease: false
64
- version_requirements: *70095293525540
64
+ version_requirements: *70109482805800
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: rake
67
- requirement: &70095293524360 !ruby/object:Gem::Requirement
67
+ requirement: &70109482804840 !ruby/object:Gem::Requirement
68
68
  none: false
69
69
  requirements:
70
70
  - - ~>
@@ -72,10 +72,10 @@ dependencies:
72
72
  version: 0.9.0
73
73
  type: :development
74
74
  prerelease: false
75
- version_requirements: *70095293524360
75
+ version_requirements: *70109482804840
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: rspec
78
- requirement: &70095293523040 !ruby/object:Gem::Requirement
78
+ requirement: &70109482803980 !ruby/object:Gem::Requirement
79
79
  none: false
80
80
  requirements:
81
81
  - - ~>
@@ -83,10 +83,10 @@ dependencies:
83
83
  version: '2.6'
84
84
  type: :development
85
85
  prerelease: false
86
- version_requirements: *70095293523040
86
+ version_requirements: *70109482803980
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: tzinfo
89
- requirement: &70095293522260 !ruby/object:Gem::Requirement
89
+ requirement: &70109482803280 !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
92
92
  - - ~>
@@ -94,7 +94,7 @@ dependencies:
94
94
  version: 0.3.29
95
95
  type: :development
96
96
  prerelease: false
97
- version_requirements: *70095293522260
97
+ version_requirements: *70109482803280
98
98
  description: Create plain old ruby models without reinventing the wheel.
99
99
  email:
100
100
  - cgriego@gmail.com
@@ -137,6 +137,7 @@ files:
137
137
  - lib/active_attr/rspec.rb
138
138
  - lib/active_attr/typecasted_attributes.rb
139
139
  - lib/active_attr/typecasting.rb
140
+ - lib/active_attr/typecasting/big_decimal_typecaster.rb
140
141
  - lib/active_attr/typecasting/boolean.rb
141
142
  - lib/active_attr/typecasting/boolean_typecaster.rb
142
143
  - lib/active_attr/typecasting/date_time_typecaster.rb
@@ -150,6 +151,7 @@ files:
150
151
  - spec/functional/active_attr/attribute_defaults_spec.rb
151
152
  - spec/functional/active_attr/attributes_spec.rb
152
153
  - spec/functional/active_attr/chainable_initialization_spec.rb
154
+ - spec/functional/active_attr/matchers/have_attribute_matcher_spec.rb
153
155
  - spec/functional/active_attr/model_spec.rb
154
156
  - spec/functional/active_attr/query_attributes_spec.rb
155
157
  - spec/functional/active_attr/typecasted_attributes_spec.rb
@@ -168,8 +170,10 @@ files:
168
170
  - spec/unit/active_attr/mass_assignment_security_spec.rb
169
171
  - spec/unit/active_attr/mass_assignment_spec.rb
170
172
  - spec/unit/active_attr/matchers/have_attribute_matcher_spec.rb
173
+ - spec/unit/active_attr/matchers_spec.rb
171
174
  - spec/unit/active_attr/query_attributes_spec.rb
172
175
  - spec/unit/active_attr/typecasted_attributes_spec.rb
176
+ - spec/unit/active_attr/typecasting/big_decimal_typecaster_spec.rb
173
177
  - spec/unit/active_attr/typecasting/boolean_spec.rb
174
178
  - spec/unit/active_attr/typecasting/boolean_typecaster_spec.rb
175
179
  - spec/unit/active_attr/typecasting/date_time_typecaster_spec.rb
@@ -195,13 +199,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
199
  version: '0'
196
200
  segments:
197
201
  - 0
198
- hash: -2101862700506728193
202
+ hash: -2941939635939237766
199
203
  required_rubygems_version: !ruby/object:Gem::Requirement
200
204
  none: false
201
205
  requirements:
202
- - - ! '>'
206
+ - - ! '>='
203
207
  - !ruby/object:Gem::Version
204
- version: 1.3.1
208
+ version: '0'
209
+ segments:
210
+ - 0
211
+ hash: -2941939635939237766
205
212
  requirements: []
206
213
  rubyforge_project: active_attr
207
214
  rubygems_version: 1.8.10
@@ -212,6 +219,7 @@ test_files:
212
219
  - spec/functional/active_attr/attribute_defaults_spec.rb
213
220
  - spec/functional/active_attr/attributes_spec.rb
214
221
  - spec/functional/active_attr/chainable_initialization_spec.rb
222
+ - spec/functional/active_attr/matchers/have_attribute_matcher_spec.rb
215
223
  - spec/functional/active_attr/model_spec.rb
216
224
  - spec/functional/active_attr/query_attributes_spec.rb
217
225
  - spec/functional/active_attr/typecasted_attributes_spec.rb
@@ -230,8 +238,10 @@ test_files:
230
238
  - spec/unit/active_attr/mass_assignment_security_spec.rb
231
239
  - spec/unit/active_attr/mass_assignment_spec.rb
232
240
  - spec/unit/active_attr/matchers/have_attribute_matcher_spec.rb
241
+ - spec/unit/active_attr/matchers_spec.rb
233
242
  - spec/unit/active_attr/query_attributes_spec.rb
234
243
  - spec/unit/active_attr/typecasted_attributes_spec.rb
244
+ - spec/unit/active_attr/typecasting/big_decimal_typecaster_spec.rb
235
245
  - spec/unit/active_attr/typecasting/boolean_spec.rb
236
246
  - spec/unit/active_attr/typecasting/boolean_typecaster_spec.rb
237
247
  - spec/unit/active_attr/typecasting/date_time_typecaster_spec.rb