attrio 0.1.1 → 0.2.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/README.md +118 -4
- data/lib/attrio.rb +22 -9
- data/lib/attrio/attribute.rb +9 -6
- data/lib/attrio/builders/accessor_builder.rb +5 -5
- data/lib/attrio/builders/reader_builder.rb +4 -4
- data/lib/attrio/builders/writer_builder.rb +12 -5
- data/lib/attrio/core_ext/hash.rb +7 -0
- data/lib/attrio/default_value.rb +16 -0
- data/lib/attrio/default_value/base.rb +30 -0
- data/lib/attrio/default_value/callable.rb +23 -0
- data/lib/attrio/default_value/clonable.rb +28 -0
- data/lib/attrio/default_value/symbol.rb +22 -0
- data/lib/attrio/initialize.rb +2 -9
- data/lib/attrio/reset.rb +16 -5
- data/lib/attrio/types/base.rb +0 -4
- data/lib/attrio/types/date.rb +2 -2
- data/lib/attrio/types/date_time.rb +1 -1
- data/lib/attrio/types/time.rb +1 -1
- data/lib/attrio/version.rb +2 -2
- data/spec/attrio/attrio_spec.rb +1 -11
- data/spec/attrio/default_value/callable_spec.rb +37 -0
- data/spec/attrio/default_value/clonable_spec.rb +45 -0
- data/spec/attrio/default_value/handle_spec.rb +29 -0
- data/spec/attrio/default_value/symbol_spec.rb +33 -0
- data/spec/attrio/default_value/value_spec.rb +74 -0
- data/spec/attrio/embed_value_spec.rb +59 -0
- data/spec/attrio/inspect_spec.rb +4 -4
- data/spec/attrio/reset_spec.rb +6 -4
- data/spec/attrio/type_spec.rb +14 -144
- data/spec/attrio/types/integer_spec.rb +5 -5
- data/spec/attrio/types/symbol_spec.rb +41 -3
- metadata +21 -6
- data/spec/attrio/default_value_spec.rb +0 -60
data/spec/attrio/reset_spec.rb
CHANGED
@@ -20,14 +20,16 @@ describe Attrio::Reset do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should respond_to reset_attributes' do
|
23
|
-
object.respond_to?(:reset_attributes).should be_true
|
24
|
-
object.respond_to?(:reset_attributes!).should be_true
|
23
|
+
object.respond_to?(:reset_attributes).should be_true
|
25
24
|
end
|
26
25
|
|
27
|
-
it 'should' do
|
26
|
+
it 'should reset attributes without :default option to nil' do
|
28
27
|
object.reset_attributes
|
29
28
|
object.first.should be_nil
|
30
|
-
object.second.should == 'default'
|
31
29
|
end
|
32
30
|
|
31
|
+
it 'should reset attributes with :default option to default value' do
|
32
|
+
object.reset_attributes
|
33
|
+
object.second.should == 'default'
|
34
|
+
end
|
33
35
|
end
|
data/spec/attrio/type_spec.rb
CHANGED
@@ -1,152 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
let(:object) { model.new }
|
17
|
-
|
18
|
-
it 'should' do
|
19
|
-
object.attribute = 10
|
20
|
-
object.attribute.is_a?(Integer).should be_true
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should' do
|
24
|
-
object.attribute = 'string'
|
25
|
-
object.attribute.should == 0
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context '' do
|
30
|
-
let(:model) do
|
31
|
-
Class.new do
|
32
|
-
include Attrio
|
33
|
-
|
34
|
-
define_attributes do
|
35
|
-
attr :attribute, 'integer'
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
let(:object) { model.new }
|
41
|
-
|
42
|
-
it 'should' do
|
43
|
-
object.attribute = 10
|
44
|
-
object.attribute.is_a?(Integer).should be_true
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should' do
|
48
|
-
object.attribute = 'string'
|
49
|
-
object.attribute.should == 0
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context '' do
|
54
|
-
let(:model) do
|
55
|
-
Class.new do
|
56
|
-
include Attrio
|
57
|
-
|
58
|
-
define_attributes do
|
59
|
-
attr :attribute, :integer
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
let(:object) { model.new }
|
65
|
-
|
66
|
-
it 'should' do
|
67
|
-
object.attribute = 10
|
68
|
-
object.attribute.is_a?(Integer).should be_true
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'should' do
|
72
|
-
object.attribute = 'string'
|
73
|
-
object.attribute.should == 0
|
3
|
+
describe Attrio::Types::Base do
|
4
|
+
let(:model) do
|
5
|
+
Class.new do
|
6
|
+
include Attrio
|
7
|
+
|
8
|
+
define_attributes do
|
9
|
+
attr :type_as_constant, Integer
|
10
|
+
attr :type_in_options_as_constant, Integer
|
11
|
+
attr :type_as_string, 'integer'
|
12
|
+
attr :type_in_options_as_string, 'integer'
|
13
|
+
attr :type_as_symbol, :integer
|
14
|
+
attr :type_in_options_as_symbol, :integer
|
74
15
|
end
|
75
16
|
end
|
76
17
|
end
|
77
18
|
|
78
|
-
|
79
|
-
|
80
|
-
let(:model) do
|
81
|
-
Class.new do
|
82
|
-
include Attrio
|
83
|
-
|
84
|
-
define_attributes do
|
85
|
-
attr :attribute, :type => Integer
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
let(:object) { model.new }
|
91
|
-
|
92
|
-
it 'should' do
|
93
|
-
object.attribute = 10
|
94
|
-
object.attribute.is_a?(Integer).should be_true
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'should' do
|
98
|
-
object.attribute = 'string'
|
99
|
-
object.attribute.should == 0
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context '' do
|
104
|
-
let(:model) do
|
105
|
-
Class.new do
|
106
|
-
include Attrio
|
107
|
-
|
108
|
-
define_attributes do
|
109
|
-
attr :attribute, :type => 'integer'
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
let(:object) { model.new }
|
115
|
-
|
116
|
-
it 'should' do
|
117
|
-
object.attribute = 10
|
118
|
-
object.attribute.is_a?(Integer).should be_true
|
119
|
-
end
|
120
|
-
|
121
|
-
it 'should' do
|
122
|
-
object.attribute = 'string'
|
123
|
-
object.attribute.should == 0
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context '' do
|
128
|
-
let(:model) do
|
129
|
-
Class.new do
|
130
|
-
include Attrio
|
131
|
-
|
132
|
-
define_attributes do
|
133
|
-
attr :attribute, :type => :integer
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
let(:object) { model.new }
|
139
|
-
|
140
|
-
it 'should' do
|
141
|
-
object.attribute = 10
|
142
|
-
object.attribute.is_a?(Integer).should be_true
|
143
|
-
end
|
144
|
-
|
145
|
-
it 'should' do
|
146
|
-
object.attribute = 'string'
|
147
|
-
object.attribute.is_a?(Integer).should be_true
|
148
|
-
object.attribute.should == 0
|
149
|
-
end
|
150
|
-
end
|
19
|
+
it 'should set appropriate type by all available options ' do
|
20
|
+
model.attributes.values.each { |attribute| attribute.type.should be(Attrio::Types::Integer) }
|
151
21
|
end
|
152
22
|
end
|
@@ -15,12 +15,12 @@ describe Attrio::Types::Integer do
|
|
15
15
|
let(:object){ model.new }
|
16
16
|
|
17
17
|
context 'with not typecasted assignment' do
|
18
|
-
it 'should cast an object which
|
18
|
+
it 'should cast an object which has method to_i' do
|
19
19
|
object.integer_attribute = "10 test"
|
20
20
|
object.integer_attribute.should == 10
|
21
21
|
end
|
22
22
|
|
23
|
-
it 'should not cast an object which
|
23
|
+
it 'should not cast an object which has not method to_i' do
|
24
24
|
lambda {
|
25
25
|
object.integer_attribute = []
|
26
26
|
}.should_not raise_exception
|
@@ -50,17 +50,17 @@ describe Attrio::Types::Integer do
|
|
50
50
|
let(:object){ model.new }
|
51
51
|
|
52
52
|
context 'with not typecasted assignment' do
|
53
|
-
it 'should cast' do
|
53
|
+
it 'should cast <String> considering :base option' do
|
54
54
|
object.integer_attribute = "A"
|
55
55
|
object.integer_attribute.should == 10
|
56
56
|
end
|
57
57
|
|
58
|
-
it 'should cast an object which
|
58
|
+
it 'should cast an object which has method to_i' do
|
59
59
|
object.integer_attribute = 10.0
|
60
60
|
object.integer_attribute.should == 10
|
61
61
|
end
|
62
62
|
|
63
|
-
it 'should not cast an object which
|
63
|
+
it 'should not cast an object which has not method to_i' do
|
64
64
|
lambda {
|
65
65
|
object.integer_attribute = []
|
66
66
|
}.should_not raise_exception
|
@@ -16,11 +16,49 @@ describe Attrio::Types::Symbol do
|
|
16
16
|
|
17
17
|
context 'with not typecasted assignment' do
|
18
18
|
it 'should cast <String>' do
|
19
|
-
object.symbol_attribute = "
|
20
|
-
object.symbol_attribute.should == :
|
19
|
+
object.symbol_attribute = "CamelCase"
|
20
|
+
object.symbol_attribute.should == :CamelCase
|
21
21
|
end
|
22
22
|
|
23
|
-
it 'should not cast object which has not method to_sym' do
|
23
|
+
it 'should not cast an object which has not method to_sym' do
|
24
|
+
lambda {
|
25
|
+
object.symbol_attribute = []
|
26
|
+
}.should_not raise_exception
|
27
|
+
object.symbol_attribute.should be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with typecasted assignment' do
|
32
|
+
it 'should assign <Symbol>' do
|
33
|
+
symbol = :symbol
|
34
|
+
|
35
|
+
object.symbol_attribute = symbol
|
36
|
+
object.symbol_attribute.should == symbol
|
37
|
+
object.symbol_attribute.should be_equal(symbol)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context ':underscore option passed' do
|
43
|
+
let(:model) do
|
44
|
+
Class.new do
|
45
|
+
include Attrio
|
46
|
+
|
47
|
+
define_attributes do
|
48
|
+
attr :symbol_attribute, Symbol, :underscore => true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:object){ model.new }
|
54
|
+
|
55
|
+
context 'with not typecasted assignment' do
|
56
|
+
it 'should cast <String>' do
|
57
|
+
object.symbol_attribute = "CamelCase"
|
58
|
+
object.symbol_attribute.should == :camel_case
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should not cast an object which has not method to_sym' do
|
24
62
|
lambda {
|
25
63
|
object.symbol_attribute = []
|
26
64
|
}.should_not raise_exception
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attrio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-05-
|
13
|
+
date: 2013-05-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -151,6 +151,11 @@ files:
|
|
151
151
|
- lib/attrio/core_ext/object.rb
|
152
152
|
- lib/attrio/core_ext/string.rb
|
153
153
|
- lib/attrio/core_ext/time.rb
|
154
|
+
- lib/attrio/default_value.rb
|
155
|
+
- lib/attrio/default_value/base.rb
|
156
|
+
- lib/attrio/default_value/callable.rb
|
157
|
+
- lib/attrio/default_value/clonable.rb
|
158
|
+
- lib/attrio/default_value/symbol.rb
|
154
159
|
- lib/attrio/initialize.rb
|
155
160
|
- lib/attrio/inspect.rb
|
156
161
|
- lib/attrio/reset.rb
|
@@ -164,7 +169,12 @@ files:
|
|
164
169
|
- lib/attrio/types/time.rb
|
165
170
|
- lib/attrio/version.rb
|
166
171
|
- spec/attrio/attrio_spec.rb
|
167
|
-
- spec/attrio/
|
172
|
+
- spec/attrio/default_value/callable_spec.rb
|
173
|
+
- spec/attrio/default_value/clonable_spec.rb
|
174
|
+
- spec/attrio/default_value/handle_spec.rb
|
175
|
+
- spec/attrio/default_value/symbol_spec.rb
|
176
|
+
- spec/attrio/default_value/value_spec.rb
|
177
|
+
- spec/attrio/embed_value_spec.rb
|
168
178
|
- spec/attrio/inspect_spec.rb
|
169
179
|
- spec/attrio/reset_spec.rb
|
170
180
|
- spec/attrio/type_spec.rb
|
@@ -190,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
200
|
version: '0'
|
191
201
|
segments:
|
192
202
|
- 0
|
193
|
-
hash:
|
203
|
+
hash: 2070292704708193097
|
194
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
205
|
none: false
|
196
206
|
requirements:
|
@@ -199,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
209
|
version: '0'
|
200
210
|
segments:
|
201
211
|
- 0
|
202
|
-
hash:
|
212
|
+
hash: 2070292704708193097
|
203
213
|
requirements: []
|
204
214
|
rubyforge_project:
|
205
215
|
rubygems_version: 1.8.24
|
@@ -209,7 +219,12 @@ summary: Attributes for plain old Ruby objects. No dependencies, only simplicity
|
|
209
219
|
clearness.
|
210
220
|
test_files:
|
211
221
|
- spec/attrio/attrio_spec.rb
|
212
|
-
- spec/attrio/
|
222
|
+
- spec/attrio/default_value/callable_spec.rb
|
223
|
+
- spec/attrio/default_value/clonable_spec.rb
|
224
|
+
- spec/attrio/default_value/handle_spec.rb
|
225
|
+
- spec/attrio/default_value/symbol_spec.rb
|
226
|
+
- spec/attrio/default_value/value_spec.rb
|
227
|
+
- spec/attrio/embed_value_spec.rb
|
213
228
|
- spec/attrio/inspect_spec.rb
|
214
229
|
- spec/attrio/reset_spec.rb
|
215
230
|
- spec/attrio/type_spec.rb
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "DefaultValue" do
|
4
|
-
context "without 'default' option" do
|
5
|
-
let(:model) do
|
6
|
-
Class.new do
|
7
|
-
include Attrio
|
8
|
-
|
9
|
-
define_attributes do
|
10
|
-
attr :attribute, Date
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:object){ model.new }
|
16
|
-
|
17
|
-
it "should set variable to nil" do
|
18
|
-
object.attribute.should be_nil
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "without 'default' option" do
|
23
|
-
context 'with not typecasted assignment' do
|
24
|
-
let(:model) do
|
25
|
-
Class.new do
|
26
|
-
include Attrio
|
27
|
-
|
28
|
-
define_attributes do
|
29
|
-
attr :attribute, Date, :default => Date.today.to_s
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
let(:object){ model.new }
|
35
|
-
|
36
|
-
it "should set variable to default value" do
|
37
|
-
object.attribute.should == Date.today
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'with typecasted assignment' do
|
42
|
-
let(:model) do
|
43
|
-
Class.new do
|
44
|
-
include Attrio
|
45
|
-
|
46
|
-
define_attributes do
|
47
|
-
attr :attribute, Date, :default => Date.today
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
let(:object){ model.new }
|
53
|
-
|
54
|
-
it "should set variable to default value" do
|
55
|
-
object.attribute.should == Date.today
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|