doodle 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +38 -0
- data/lib/doodle.rb +192 -212
- data/lib/doodle/version.rb +1 -1
- data/spec/attributes_spec.rb +25 -24
- data/spec/bugs_spec.rb +2 -2
- data/spec/class_spec.rb +5 -5
- data/spec/conversion_spec.rb +1 -1
- data/spec/defaults_spec.rb +8 -8
- data/spec/doodle_context_spec.rb +2 -2
- data/spec/doodle_spec.rb +22 -22
- data/spec/from_spec.rb +43 -0
- data/spec/has_spec.rb +15 -6
- data/spec/inheritance_spec.rb +11 -12
- data/spec/init_spec.rb +6 -6
- data/spec/kind_spec.rb +17 -0
- data/spec/singleton_spec.rb +12 -12
- data/spec/specialized_attribute_class_spec.rb +4 -4
- data/spec/superclass_spec.rb +6 -6
- data/spec/validation2_spec.rb +4 -4
- data/spec/validation_spec.rb +5 -5
- metadata +4 -2
data/lib/doodle/version.rb
CHANGED
data/spec/attributes_spec.rb
CHANGED
@@ -33,7 +33,7 @@ describe Doodle::DoodleAttribute, 'basics' do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'should have attribute :ivar1 with default defined' do
|
36
|
-
@foo.
|
36
|
+
@foo.doodle.attributes[:ivar1].default.should == 'Hello'
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'should have default name' do
|
@@ -45,68 +45,69 @@ describe Doodle::DoodleAttribute, 'basics' do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'should have name required == false (because has default)' do
|
48
|
-
@foo.
|
48
|
+
@foo.doodle.attributes[:ivar1].required?.should == false
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'should have ivar2 required == true' do
|
52
|
-
@bar.
|
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.
|
56
|
+
@foo.doodle.attributes[:ivar1].optional?.should == true
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'should inherit attribute from parent' do
|
60
|
-
@bar.
|
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.
|
64
|
+
@bar.doodle.attributes[:ivar2].optional?.should == false
|
65
65
|
end
|
66
66
|
|
67
|
-
# it "should have
|
68
|
-
#
|
69
|
-
# Bar.
|
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
|
73
|
-
@bar.singleton_class.
|
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.
|
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
|
81
|
-
Bar.class_attributes.keys.should == [:cvar1, :cvar2]
|
81
|
+
Bar.doodle.class_attributes.keys.should == [:cvar1, :cvar2]
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'should have inherited class_attributes in order of definition' do
|
85
|
-
@bar.class_attributes.keys.should == [:cvar1, :cvar2]
|
85
|
+
@bar.doodle.class_attributes.keys.should == [:cvar1, :cvar2]
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'should have local class attributes in order of definition' do
|
89
|
-
Bar.singleton_class.
|
89
|
+
Bar.singleton_class.doodle.attributes(false).keys.should == [:cvar2]
|
90
90
|
end
|
91
91
|
|
92
|
-
|
93
|
-
|
92
|
+
# bit iffy this test - testing implementation, not interface
|
93
|
+
it 'should not inherit singleton doodle.local_attributes' do
|
94
|
+
@bar.singleton_class.class_eval { doodle.collect_inherited(:local_attributes).map { |x| x[0]} }.should == []
|
94
95
|
end
|
95
96
|
|
96
97
|
it 'should not inherit singleton attributes#1' do
|
97
|
-
@bar.singleton_class.
|
98
|
+
@bar.singleton_class.doodle.attributes.map { |x| x[0]} .should == [:svar2]
|
98
99
|
end
|
99
100
|
|
100
101
|
it 'should not inherit singleton attributes#2' do
|
101
|
-
@bar.singleton_class.
|
102
|
+
@bar.singleton_class.doodle.attributes.keys.should == [:svar2]
|
102
103
|
end
|
103
104
|
|
104
105
|
it 'should not inherit singleton attributes#3' do
|
105
|
-
@bar.singleton_class.
|
106
|
+
@bar.singleton_class.doodle.attributes(false).keys.should == [:svar2]
|
106
107
|
end
|
107
108
|
|
108
109
|
it 'should show singleton attributes in attributes' do
|
109
|
-
@bar.
|
110
|
+
@bar.doodle.attributes.keys.should == [:ivar1, :ivar2, :svar2]
|
110
111
|
end
|
111
112
|
|
112
113
|
end
|
@@ -129,12 +130,12 @@ describe Doodle::DoodleAttribute, 'attribute order' do
|
|
129
130
|
end
|
130
131
|
|
131
132
|
# it 'should keep order of inherited attributes' do
|
132
|
-
#
|
133
|
-
# C.
|
133
|
+
# expected_doodle.parents = RUBY_VERSION <= "1.8.6" ? [B, A, Doodle, Object] : [B, A, Doodle, Object, BasicObject]
|
134
|
+
# C.doodle.parents.should == expected_doodle.parents
|
134
135
|
# end
|
135
136
|
|
136
137
|
it 'should keep order of inherited attributes' do
|
137
|
-
C.
|
138
|
+
C.doodle.attributes.keys.should == [:a, :b, :c]
|
138
139
|
end
|
139
140
|
end
|
140
141
|
end
|
data/spec/bugs_spec.rb
CHANGED
@@ -15,8 +15,8 @@ describe 'Doodle', 'inheriting validations' do
|
|
15
15
|
|
16
16
|
it 'should not duplicate validations when accessing them!' do
|
17
17
|
foo = Foo 2
|
18
|
-
foo.
|
19
|
-
foo.
|
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.
|
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.
|
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,14 +73,14 @@ 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.
|
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.
|
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
|
-
Bar.class_attributes.keys.should_be [:metadata, :doc]
|
83
|
+
Bar.doodle.class_attributes.keys.should_be [:metadata, :doc]
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
data/spec/conversion_spec.rb
CHANGED
data/spec/defaults_spec.rb
CHANGED
@@ -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.
|
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.
|
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.
|
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.
|
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.
|
32
|
-
@foo.singleton_class.
|
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.
|
35
|
-
@foo.singleton_class.
|
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_context_spec.rb
CHANGED
@@ -20,7 +20,7 @@ describe Doodle, "doodle_context" do
|
|
20
20
|
# during initialization - this is a way to capture that
|
21
21
|
# value for ues later
|
22
22
|
|
23
|
-
init {
|
23
|
+
init { doodle.parent }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -38,7 +38,7 @@ describe Doodle, "doodle_context" do
|
|
38
38
|
|
39
39
|
sean = dad.children[0]
|
40
40
|
sean.dad.name.should_be 'Conn'
|
41
|
-
sean.
|
41
|
+
sean.doodle.parent.name.should_be 'Conn'
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
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.
|
27
|
+
@foo.doodle.attributes(false).keys.should_be []
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'should list instance attributes' do
|
31
|
-
@foo.
|
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.
|
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.
|
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.
|
75
|
+
Foo.singleton_class.doodle.attributes.keys.should_be [:metadata]
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -137,27 +137,27 @@ 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.
|
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.
|
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.
|
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.
|
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
|
156
|
-
Bar.class_attributes.keys.should_be [:metadata, :doc]
|
156
|
+
Bar.doodle.class_attributes.keys.should_be [:metadata, :doc]
|
157
157
|
end
|
158
158
|
|
159
159
|
it "should list all inherited class's attributes" do
|
160
|
-
Bar.
|
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.
|
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.
|
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.
|
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.
|
249
|
-
@bar.class.
|
250
|
-
@bar2.class.
|
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.
|
255
|
-
@bar.singleton_class.
|
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.
|
260
|
-
@bar.singleton_class.
|
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.
|
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'
|
data/spec/from_spec.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe 'Doodle', 'applying Doodle type conversions' do
|
4
|
+
temporary_constant :Foo, :Name do
|
5
|
+
before :each do
|
6
|
+
class Name < String
|
7
|
+
include Doodle::Core
|
8
|
+
from String do |s|
|
9
|
+
Name.new(s)
|
10
|
+
end
|
11
|
+
must "be > 3 chars long" do
|
12
|
+
size > 3
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Foo < Doodle
|
17
|
+
has Name do
|
18
|
+
must "start with A" do |s|
|
19
|
+
s =~ /^A/
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should convert a value based on conversions in doodle class' do
|
26
|
+
proc { foo = Foo 'Arthur' }.should_not raise_error
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should convert a value based on conversions in doodle class to the correct class' do
|
30
|
+
foo = Foo 'Arthur'
|
31
|
+
foo.name.class.should_be Name
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should apply validations from attribute' do
|
35
|
+
proc { Foo 'Zaphod' }.should raise_error(Doodle::ValidationError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should apply validations from doodle type' do
|
39
|
+
proc { Foo 'Art' }.should raise_error(Doodle::ConversionError)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
data/spec/has_spec.rb
CHANGED
@@ -8,9 +8,9 @@ describe Doodle, 'has Class' do
|
|
8
8
|
class Foo < Doodle
|
9
9
|
has Bar
|
10
10
|
end
|
11
|
-
att = Foo.
|
11
|
+
att = Foo.doodle.attributes.values.first
|
12
12
|
att.name.should_be :bar
|
13
|
-
att.kind.should_be Bar
|
13
|
+
att.kind.should_be [Bar]
|
14
14
|
end
|
15
15
|
it "should allow overriding name of attribute when using 'has Bar'" do
|
16
16
|
class Bar
|
@@ -18,9 +18,9 @@ describe Doodle, 'has Class' do
|
|
18
18
|
class Foo < Doodle
|
19
19
|
has Bar, :name => :baz
|
20
20
|
end
|
21
|
-
att = Foo.
|
21
|
+
att = Foo.doodle.attributes.values.first
|
22
22
|
att.name.should_be :baz
|
23
|
-
att.kind.should_be Bar
|
23
|
+
att.kind.should_be [Bar]
|
24
24
|
end
|
25
25
|
it "should convert class name to snakecase when using CamelCase class constant" do
|
26
26
|
class AudioClip
|
@@ -28,9 +28,18 @@ describe Doodle, 'has Class' do
|
|
28
28
|
class Foo < Doodle
|
29
29
|
has AudioClip
|
30
30
|
end
|
31
|
-
att = Foo.
|
31
|
+
att = Foo.doodle.attributes.values.first
|
32
32
|
att.name.should_be :audio_clip
|
33
|
-
att.kind.should_be AudioClip
|
33
|
+
att.kind.should_be [AudioClip]
|
34
|
+
end
|
35
|
+
it "should apply validations for 'has Bar' as if 'has :bar, :kind => Bar' was used" do
|
36
|
+
class Bar
|
37
|
+
end
|
38
|
+
class Foo < Doodle
|
39
|
+
has Bar
|
40
|
+
end
|
41
|
+
proc { Foo.new(:bar => Bar.new) }.should_not raise_error
|
42
|
+
proc { Foo.new(:bar => "Hello") }.should raise_error(Doodle::ValidationError)
|
34
43
|
end
|
35
44
|
end
|
36
45
|
end
|
data/spec/inheritance_spec.rb
CHANGED
@@ -19,8 +19,7 @@ describe Doodle, "inheritance" do
|
|
19
19
|
|
20
20
|
it "should collect_inherited for instance" do
|
21
21
|
foo = Foo.new(:ivar => "foo")
|
22
|
-
foo.
|
23
|
-
foo.doodle_attributes.map{ |key, value| key}.should_be [:ivar]
|
22
|
+
foo.doodle.attributes.map{ |key, value| key}.should_be [:ivar]
|
24
23
|
end
|
25
24
|
|
26
25
|
it "should collect inherited for singleton" do
|
@@ -28,8 +27,8 @@ describe Doodle, "inheritance" do
|
|
28
27
|
class << foo
|
29
28
|
has :svar
|
30
29
|
end
|
31
|
-
foo.
|
32
|
-
foo.singleton_class.
|
30
|
+
foo.doodle.attributes.map{ |key, value| key}.should_be [:ivar, :svar]
|
31
|
+
foo.singleton_class.doodle.attributes.map{ |key, value| key}.should_be [:svar]
|
33
32
|
end
|
34
33
|
|
35
34
|
it "should collect singleton class attributes for singleton" do
|
@@ -38,7 +37,7 @@ describe Doodle, "inheritance" do
|
|
38
37
|
has :svar
|
39
38
|
end
|
40
39
|
foo.singleton_class.respond_to?(:cvar).should_be true
|
41
|
-
foo.
|
40
|
+
foo.doodle.attributes.map{ |key, value| key}.should_be [:ivar, :svar]
|
42
41
|
# is this what I want? not sure
|
43
42
|
# foo.class.singleton_class.should_be foo.singleton_class.superclass
|
44
43
|
# foo.singleton_class.singleton_class # => #<Class:#<Class:#<Foo:0xb7bc8dd0>>>
|
@@ -53,22 +52,22 @@ describe Doodle, "inheritance" do
|
|
53
52
|
class << bar
|
54
53
|
has :svar2
|
55
54
|
end
|
56
|
-
bar.
|
57
|
-
bar.singleton_class.
|
55
|
+
bar.doodle.attributes.map{ |key, value| key}.should_be [:ivar, :ivar2, :svar2]
|
56
|
+
bar.singleton_class.doodle.attributes.map{ |key, value| key}.should_be [:svar2]
|
58
57
|
end
|
59
58
|
|
60
59
|
it "should show instance attributes for class" do
|
61
|
-
Foo.
|
62
|
-
Bar.
|
60
|
+
Foo.doodle.attributes.map{ |key, value| key}.should_be [:ivar]
|
61
|
+
Bar.doodle.attributes.map{ |key, value| key}.should_be [:ivar, :ivar2]
|
63
62
|
end
|
64
63
|
|
65
64
|
it "should inherite class attributes for class" do
|
66
|
-
Foo.class_attributes.map{ |key, value| key}.should_be [:cvar]
|
67
|
-
Bar.class_attributes.map{ |key, value| key}.should_be [:cvar, :cvar2]
|
65
|
+
Foo.doodle.class_attributes.map{ |key, value| key}.should_be [:cvar]
|
66
|
+
Bar.doodle.class_attributes.map{ |key, value| key}.should_be [:cvar, :cvar2]
|
68
67
|
end
|
69
68
|
|
70
69
|
it "should not inherit class attributes via singleton_class" do
|
71
|
-
Bar.singleton_class.
|
70
|
+
Bar.singleton_class.doodle.attributes.map{ |key, value| key}.should_be [:cvar2]
|
72
71
|
end
|
73
72
|
end
|
74
73
|
end
|