doodle 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ class Doodle #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 5
5
+ TINY = 6
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe Doodle::Attribute, 'basics' do
3
+ describe Doodle::DoodleAttribute, 'basics' do
4
4
  temporary_constants :Foo, :Bar do
5
5
  before(:each) do
6
6
  class Foo
@@ -33,7 +33,7 @@ describe Doodle::Attribute, 'basics' do
33
33
  end
34
34
 
35
35
  it 'should have attribute :ivar1 with default defined' do
36
- @foo.attributes[:ivar1].default.should == 'Hello'
36
+ @foo.doodle_attributes[:ivar1].default.should == 'Hello'
37
37
  end
38
38
 
39
39
  it 'should have default name' do
@@ -45,36 +45,36 @@ describe Doodle::Attribute, 'basics' do
45
45
  end
46
46
 
47
47
  it 'should have name required == false (because has default)' do
48
- @foo.attributes[:ivar1].required?.should == false
48
+ @foo.doodle_attributes[:ivar1].required?.should == false
49
49
  end
50
50
 
51
51
  it 'should have ivar2 required == true' do
52
- @bar.attributes[:ivar2].required?.should == true
52
+ @bar.doodle_attributes[:ivar2].required?.should == true
53
53
  end
54
54
 
55
55
  it 'should have name.optional? == true (because has default)' do
56
- @foo.attributes[:ivar1].optional?.should == true
56
+ @foo.doodle_attributes[:ivar1].optional?.should == true
57
57
  end
58
58
 
59
59
  it 'should inherit attribute from parent' do
60
- @bar.attributes[:ivar1].should == @foo.attributes[:ivar1]
60
+ @bar.doodle_attributes[:ivar1].should == @foo.doodle_attributes[:ivar1]
61
61
  end
62
62
 
63
63
  it 'should have ivar2.optional? == false' do
64
- @bar.attributes[:ivar2].optional?.should == false
64
+ @bar.doodle_attributes[:ivar2].optional?.should == false
65
65
  end
66
66
 
67
- # it "should have parents in correct order" do
68
- # expected_parents = RUBY_VERSION <= "1.8.6" ? [Foo, Object] : [Foo, Object, BasicObject]
69
- # Bar.parents.should == expected_parents
67
+ # it "should have doodle_parents in correct order" do
68
+ # expected_doodle_parents = RUBY_VERSION <= "1.8.6" ? [Foo, Object] : [Foo, Object, BasicObject]
69
+ # Bar.doodle_parents.should == expected_doodle_parents
70
70
  # end
71
71
 
72
- it "should have Bar's singleton parents in reverse order of definition" do
73
- @bar.singleton_class.parents.should == []
72
+ it "should have Bar's singleton doodle_parents in reverse order of definition" do
73
+ @bar.singleton_class.doodle_parents.should == []
74
74
  end
75
75
 
76
76
  it 'should have singleton_class attributes in order of definition' do
77
- Bar.singleton_class.attributes.keys.should == [:cvar2]
77
+ Bar.singleton_class.doodle_attributes.keys.should == [:cvar2]
78
78
  end
79
79
 
80
80
  it 'should have inherited class_attributes in order of definition' do
@@ -86,33 +86,33 @@ describe Doodle::Attribute, 'basics' do
86
86
  end
87
87
 
88
88
  it 'should have local class attributes in order of definition' do
89
- Bar.singleton_class.attributes(false).keys.should == [:cvar2]
89
+ Bar.singleton_class.doodle_attributes(false).keys.should == [:cvar2]
90
90
  end
91
91
 
92
- it 'should not inherit singleton local_attributes' do
93
- @bar.singleton_class.class_eval { collect_inherited(:local_attributes).map { |x| x[0]} }.should == []
92
+ it 'should not inherit singleton doodle_local_attributes' do
93
+ @bar.singleton_class.class_eval { doodle_collect_inherited(:doodle_local_attributes).map { |x| x[0]} }.should == []
94
94
  end
95
95
 
96
96
  it 'should not inherit singleton attributes#1' do
97
- @bar.singleton_class.attributes.map { |x| x[0]} .should == [:svar2]
97
+ @bar.singleton_class.doodle_attributes.map { |x| x[0]} .should == [:svar2]
98
98
  end
99
99
 
100
100
  it 'should not inherit singleton attributes#2' do
101
- @bar.singleton_class.attributes.keys.should == [:svar2]
101
+ @bar.singleton_class.doodle_attributes.keys.should == [:svar2]
102
102
  end
103
103
 
104
104
  it 'should not inherit singleton attributes#3' do
105
- @bar.singleton_class.attributes(false).keys.should == [:svar2]
105
+ @bar.singleton_class.doodle_attributes(false).keys.should == [:svar2]
106
106
  end
107
107
 
108
108
  it 'should show singleton attributes in attributes' do
109
- @bar.attributes.keys.should == [:ivar1, :ivar2, :svar2]
109
+ @bar.doodle_attributes.keys.should == [:ivar1, :ivar2, :svar2]
110
110
  end
111
111
 
112
112
  end
113
113
  end
114
114
 
115
- describe Doodle::Attribute, 'attribute order' do
115
+ describe Doodle::DoodleAttribute, 'attribute order' do
116
116
  temporary_constants :A, :B, :C do
117
117
  before :each do
118
118
  class A < Doodle
@@ -129,12 +129,12 @@ describe Doodle::Attribute, 'attribute order' do
129
129
  end
130
130
 
131
131
  # it 'should keep order of inherited attributes' do
132
- # expected_parents = RUBY_VERSION <= "1.8.6" ? [B, A, Doodle, Object] : [B, A, Doodle, Object, BasicObject]
133
- # C.parents.should == expected_parents
132
+ # expected_doodle_parents = RUBY_VERSION <= "1.8.6" ? [B, A, Doodle, Object] : [B, A, Doodle, Object, BasicObject]
133
+ # C.doodle_parents.should == expected_doodle_parents
134
134
  # end
135
135
 
136
136
  it 'should keep order of inherited attributes' do
137
- C.attributes.keys.should == [:a, :b, :c]
137
+ C.doodle_attributes.keys.should == [:a, :b, :c]
138
138
  end
139
139
  end
140
140
  end
data/spec/bugs_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
  require 'yaml'
3
3
 
4
- describe 'Doodle', 'parents' do
4
+ describe 'Doodle', 'inheriting validations' do
5
5
  temporary_constant :Foo do
6
6
  before :each do
7
7
  class Foo < Doodle
@@ -15,8 +15,8 @@ describe 'Doodle', 'parents' do
15
15
 
16
16
  it 'should not duplicate validations when accessing them!' do
17
17
  foo = Foo 2
18
- foo.validations.size.should_be 1
19
- foo.validations.size.should_be 1
18
+ foo.doodle_validations.size.should_be 1
19
+ foo.doodle_validations.size.should_be 1
20
20
  end
21
21
  end
22
22
  end
data/spec/class_spec.rb CHANGED
@@ -36,11 +36,11 @@ describe Doodle, 'class attributes' do
36
36
  end
37
37
 
38
38
  it "should list all class's own attributes" do
39
- Foo.singleton_class.attributes(false).keys.should_be [:metadata]
39
+ Foo.singleton_class.doodle_attributes(false).keys.should_be [:metadata]
40
40
  end
41
41
 
42
42
  it "should list all class's own attributes" do
43
- Foo.singleton_class.attributes.keys.should_be [:metadata]
43
+ Foo.singleton_class.doodle_attributes.keys.should_be [:metadata]
44
44
  end
45
45
 
46
46
  it 'should create Bar class attribute' do
@@ -73,11 +73,11 @@ describe Doodle, 'class attributes' do
73
73
  end
74
74
 
75
75
  it "should list all class's own attributes" do
76
- Bar.singleton_class.attributes(false).keys.should_be [:doc]
76
+ Bar.singleton_class.doodle_attributes(false).keys.should_be [:doc]
77
77
  end
78
78
 
79
79
  it "should list all class's singleton attributes" do
80
- Bar.singleton_class.attributes.keys.should_be [:doc]
80
+ Bar.singleton_class.doodle_attributes.keys.should_be [:doc]
81
81
  end
82
82
  it "should list all class's class_attributes" do
83
83
  Bar.class_attributes.keys.should_be [:metadata, :doc]
@@ -1,5 +1,31 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
+ describe Doodle, "Default collector" do
4
+ temporary_constant :Foo do
5
+ before :each do
6
+ class Foo < Doodle
7
+ has :list, :collect => :item
8
+ end
9
+ @foo = Foo do
10
+ item "Hello"
11
+ item "World"
12
+ end
13
+ end
14
+ after :each do
15
+ remove_ivars :foo
16
+ end
17
+
18
+ it "should define a collector method :item" do
19
+ @foo.methods.map{ |x| x.to_sym }.include?(:item).should_be true
20
+ end
21
+
22
+ it "should collect items into attribute :list" do
23
+ @foo.list.should_be ["Hello", "World"]
24
+ end
25
+
26
+ end
27
+ end
28
+
3
29
  describe Doodle, "Simple collector" do
4
30
  temporary_constant :Foo do
5
31
  before :each do
@@ -100,6 +126,7 @@ describe Doodle, "typed collector with specified collector name" do
100
126
  end
101
127
 
102
128
  describe Doodle, "typed collector with specified collector name initialized from hash (with default :init param)" do
129
+ # note: this spec also checks for resolving collector class
103
130
  temporary_constant :Location, :Event do
104
131
  before :each do
105
132
  class Location < Doodle
@@ -202,6 +229,15 @@ describe Doodle, "Simple keyed collector #2" do
202
229
  )
203
230
  foo.list.to_a.map{ |k, v| [k, v.class, v.name] }.should_be( [["Hello", Item, "Hello"], ["World", Item, "World"]] )
204
231
  end
232
+
233
+ it "should collect named argument hash into attribute :list" do
234
+ foo = Foo(:list => {
235
+ "Hello" => { :name => "Hello" },
236
+ "World" => { :name => "World" }
237
+ }
238
+ )
239
+ foo.list.to_a.map{ |k, v| [k, v.class, v.name] }.should_be( [["Hello", Item, "Hello"], ["World", Item, "World"]] )
240
+ end
205
241
 
206
242
  end
207
243
  end
@@ -47,7 +47,7 @@ describe Doodle, 'conversions' do
47
47
  end
48
48
 
49
49
  it 'should return class_conversions' do
50
- Foo.conversions.keys.should == [String]
50
+ Foo.doodle_conversions.keys.should == [String]
51
51
  end
52
52
 
53
53
  end
@@ -17,22 +17,22 @@ describe Doodle, 'attributes with defaults' do
17
17
  end
18
18
 
19
19
  it 'should have instance attribute default via class' do
20
- Foo.attributes[:name].default.should_be 'D1'
20
+ Foo.doodle_attributes[:name].default.should_be 'D1'
21
21
  end
22
22
  it 'should have instance attribute default via instance' do
23
- @foo.attributes[:name].default.should_be 'D1'
23
+ @foo.doodle_attributes[:name].default.should_be 'D1'
24
24
  end
25
25
  it 'should have class attribute default via class.meta' do
26
- Foo.singleton_class.attributes(false)[:metadata].default.should_be 'D2'
26
+ Foo.singleton_class.doodle_attributes(false)[:metadata].default.should_be 'D2'
27
27
  end
28
28
  it 'should have class attribute default via class.meta' do
29
- Foo.singleton_class.attributes[:metadata].default.should_be 'D2'
29
+ Foo.singleton_class.doodle_attributes[:metadata].default.should_be 'D2'
30
30
  end
31
- it 'should have singleton attribute default via instance.singleton_class.attributes(false)' do
32
- @foo.singleton_class.attributes(false)[:special].default.should_be 'D3'
31
+ it 'should have singleton attribute default via instance.singleton_class.doodle_attributes(false)' do
32
+ @foo.singleton_class.doodle_attributes(false)[:special].default.should_be 'D3'
33
33
  end
34
- it 'should have singleton attribute default via instance.singleton_class.attributes' do
35
- @foo.singleton_class.attributes[:special].default.should_be 'D3'
34
+ it 'should have singleton attribute default via instance.singleton_class.doodle_attributes' do
35
+ @foo.singleton_class.doodle_attributes[:special].default.should_be 'D3'
36
36
  end
37
37
  it 'should have singleton attribute name by default' do
38
38
  @foo.name.should_be 'D1'
data/spec/doodle_spec.rb CHANGED
@@ -24,15 +24,15 @@ describe Doodle, 'instance attributes' do
24
24
  end
25
25
 
26
26
  it 'should list instance attributes(false)' do
27
- @foo.attributes(false).keys.should_be []
27
+ @foo.doodle_attributes(false).keys.should_be []
28
28
  end
29
29
 
30
30
  it 'should list instance attributes' do
31
- @foo.attributes.keys.should_be [:name]
31
+ @foo.doodle_attributes.keys.should_be [:name]
32
32
  end
33
33
 
34
34
  it 'should list all instance attributes(false) at class level' do
35
- Foo.attributes(false).keys.should_be [:name]
35
+ Foo.doodle_attributes(false).keys.should_be [:name]
36
36
  end
37
37
  end
38
38
  end
@@ -68,11 +68,11 @@ describe Doodle, 'class attributes(false)' do
68
68
  end
69
69
 
70
70
  it "should list all class's own attributes" do
71
- Foo.singleton_class.attributes(false).keys.should_be [:metadata]
71
+ Foo.singleton_class.doodle_attributes(false).keys.should_be [:metadata]
72
72
  end
73
73
 
74
74
  it "should list all class's own attributes" do
75
- Foo.singleton_class.attributes.keys.should_be [:metadata]
75
+ Foo.singleton_class.doodle_attributes.keys.should_be [:metadata]
76
76
  end
77
77
  end
78
78
  end
@@ -137,19 +137,19 @@ describe Doodle, 'inherited class attributes(false)' do
137
137
  end
138
138
 
139
139
  it "should list class's own attributes" do
140
- Foo.singleton_class.attributes(false).keys.should_be [:metadata]
140
+ Foo.singleton_class.doodle_attributes(false).keys.should_be [:metadata]
141
141
  end
142
142
 
143
143
  it "should list all class's own attributes" do
144
- Foo.singleton_class.attributes.keys.should_be [:metadata]
144
+ Foo.singleton_class.doodle_attributes.keys.should_be [:metadata]
145
145
  end
146
146
 
147
147
  it "should list class's own attributes(false)" do
148
- Bar.singleton_class.attributes(false).keys.should_be [:doc]
148
+ Bar.singleton_class.doodle_attributes(false).keys.should_be [:doc]
149
149
  end
150
150
 
151
151
  it "should list all singleton class attributes" do
152
- Bar.singleton_class.attributes.keys.should_be [:doc]
152
+ Bar.singleton_class.doodle_attributes.keys.should_be [:doc]
153
153
  end
154
154
 
155
155
  it "should list all inherited meta class attributes" do
@@ -157,7 +157,7 @@ describe Doodle, 'inherited class attributes(false)' do
157
157
  end
158
158
 
159
159
  it "should list all inherited class's attributes" do
160
- Bar.attributes.keys.should_be [:name, :location]
160
+ Bar.doodle_attributes.keys.should_be [:name, :location]
161
161
  end
162
162
  end
163
163
  end
@@ -188,15 +188,15 @@ describe Doodle, 'singleton class attributes' do
188
188
  end
189
189
 
190
190
  it 'should list singleton instance attributes(false)' do
191
- @foo.singleton_class.attributes(false).keys.should_be [:special]
191
+ @foo.singleton_class.doodle_attributes(false).keys.should_be [:special]
192
192
  end
193
193
 
194
194
  it 'should list singleton instance attributes' do
195
- @foo.singleton_class.attributes.keys.should_be [:special]
195
+ @foo.singleton_class.doodle_attributes.keys.should_be [:special]
196
196
  end
197
197
 
198
198
  it 'should list instance attributes' do
199
- @foo.attributes.keys.should_be [:name, :special]
199
+ @foo.doodle_attributes.keys.should_be [:name, :special]
200
200
  end
201
201
 
202
202
  end
@@ -245,19 +245,19 @@ describe Doodle, 'inherited singleton class attributes' do
245
245
  end
246
246
 
247
247
  it 'should list instance attributes' do
248
- @foo.class.attributes(false).keys.should_be [:name]
249
- @bar.class.attributes(false).keys.should_be [:info]
250
- @bar2.class.attributes(false).keys.should_be [:info]
248
+ @foo.class.doodle_attributes(false).keys.should_be [:name]
249
+ @bar.class.doodle_attributes(false).keys.should_be [:info]
250
+ @bar2.class.doodle_attributes(false).keys.should_be [:info]
251
251
  end
252
252
 
253
253
  it 'should list instance meta attributes' do
254
- @foo.singleton_class.attributes(false).keys.should_be [:special]
255
- @bar.singleton_class.attributes(false).keys.should_be [:extra]
254
+ @foo.singleton_class.doodle_attributes(false).keys.should_be [:special]
255
+ @bar.singleton_class.doodle_attributes(false).keys.should_be [:extra]
256
256
  end
257
257
 
258
258
  it 'should list singleton attributes only' do
259
- @foo.singleton_class.attributes.keys.should_be [:special]
260
- @bar.singleton_class.attributes.keys.should_be [:extra]
259
+ @foo.singleton_class.doodle_attributes.keys.should_be [:special]
260
+ @bar.singleton_class.doodle_attributes.keys.should_be [:extra]
261
261
  end
262
262
 
263
263
  it 'should keep meta attributes separate' do
@@ -287,7 +287,7 @@ describe Doodle, 'inherited singleton class attributes' do
287
287
 
288
288
  it 'should inherit singleton methods from class' do
289
289
  @foo.singleton_class.respond_to?(:metadata).should_be true
290
- @foo.singleton_class.attributes[:metadata].should_be nil
290
+ @foo.singleton_class.doodle_attributes[:metadata].should_be nil
291
291
  @foo.singleton_class.metadata = 'foo meta'
292
292
  @foo.singleton_class.instance_eval { @metadata }.should_be 'foo meta'
293
293
  if RUBY_VERSION < '1.9.0'
@@ -13,8 +13,8 @@ describe Doodle, ' unspecified attributes' do
13
13
  end
14
14
  end
15
15
 
16
- describe Doodle::Attribute, ' unspecified attributes' do
16
+ describe Doodle::DoodleAttribute, ' unspecified attributes' do
17
17
  it 'should raise Doodle::UnknownAttributeError for unspecified attributes' do
18
- proc { foo = Doodle::Attribute(:name => 'foo', :extra => 'unwanted') }.should raise_error(Doodle::UnknownAttributeError)
18
+ proc { foo = Doodle::DoodleAttribute(:name => 'foo', :extra => 'unwanted') }.should raise_error(Doodle::UnknownAttributeError)
19
19
  end
20
- end
20
+ end
@@ -19,8 +19,8 @@ describe Doodle, "inheritance" do
19
19
 
20
20
  it "should collect_inherited for instance" do
21
21
  foo = Foo.new(:ivar => "foo")
22
- foo.send(:collect_inherited, :attributes).map{ |key, value| key}.should_be [:ivar]
23
- foo.attributes.map{ |key, value| key}.should_be [:ivar]
22
+ foo.send(:doodle_collect_inherited, :doodle_attributes).map{ |key, value| key}.should_be [:ivar]
23
+ foo.doodle_attributes.map{ |key, value| key}.should_be [:ivar]
24
24
  end
25
25
 
26
26
  it "should collect inherited for singleton" do
@@ -28,8 +28,8 @@ describe Doodle, "inheritance" do
28
28
  class << foo
29
29
  has :svar
30
30
  end
31
- foo.attributes.map{ |key, value| key}.should_be [:ivar, :svar]
32
- foo.singleton_class.attributes.map{ |key, value| key}.should_be [:svar]
31
+ foo.doodle_attributes.map{ |key, value| key}.should_be [:ivar, :svar]
32
+ foo.singleton_class.doodle_attributes.map{ |key, value| key}.should_be [:svar]
33
33
  end
34
34
 
35
35
  it "should collect singleton class attributes for singleton" do
@@ -38,7 +38,7 @@ describe Doodle, "inheritance" do
38
38
  has :svar
39
39
  end
40
40
  foo.singleton_class.respond_to?(:cvar).should_be true
41
- foo.attributes.map{ |key, value| key}.should_be [:ivar, :svar]
41
+ foo.doodle_attributes.map{ |key, value| key}.should_be [:ivar, :svar]
42
42
  # is this what I want? not sure
43
43
  # foo.class.singleton_class.should_be foo.singleton_class.superclass
44
44
  # foo.singleton_class.singleton_class # => #<Class:#<Class:#<Foo:0xb7bc8dd0>>>
@@ -53,22 +53,22 @@ describe Doodle, "inheritance" do
53
53
  class << bar
54
54
  has :svar2
55
55
  end
56
- bar.attributes.map{ |key, value| key}.should_be [:ivar, :ivar2, :svar2]
57
- bar.singleton_class.attributes.map{ |key, value| key}.should_be [:svar2]
56
+ bar.doodle_attributes.map{ |key, value| key}.should_be [:ivar, :ivar2, :svar2]
57
+ bar.singleton_class.doodle_attributes.map{ |key, value| key}.should_be [:svar2]
58
58
  end
59
59
 
60
60
  it "should show instance attributes for class" do
61
- Foo.attributes.map{ |key, value| key}.should_be [:ivar]
62
- Bar.attributes.map{ |key, value| key}.should_be [:ivar, :ivar2]
61
+ Foo.doodle_attributes.map{ |key, value| key}.should_be [:ivar]
62
+ Bar.doodle_attributes.map{ |key, value| key}.should_be [:ivar, :ivar2]
63
63
  end
64
64
 
65
- it "should collect_inherited for class" do
65
+ it "should inherite class attributes for class" do
66
66
  Foo.class_attributes.map{ |key, value| key}.should_be [:cvar]
67
67
  Bar.class_attributes.map{ |key, value| key}.should_be [:cvar, :cvar2]
68
68
  end
69
69
 
70
70
  it "should not inherit class attributes via singleton_class" do
71
- Bar.singleton_class.attributes.map{ |key, value| key}.should_be [:cvar2]
71
+ Bar.singleton_class.doodle_attributes.map{ |key, value| key}.should_be [:cvar2]
72
72
  end
73
73
  end
74
74
  end