aspect 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +23 -8
- data/README.md +41 -0
- data/Rakefile +53 -7
- data/VERSION +1 -1
- data/aspect.gemspec +12 -15
- data/lib/aspect/has_attributes.rb +31 -22
- data/lib/aspect/has_registry.rb +28 -0
- data/lib/aspect/message_transform.rb +97 -0
- data/lib/aspect/validator.rb +112 -0
- data/lib/aspect/verifier/check.rb +125 -0
- data/lib/aspect/verifier.rb +212 -0
- data/lib/aspect/version.rb +3 -0
- data/lib/aspect.rb +1 -2
- data/spec/coverage/assets/0.10.0/application.css +799 -0
- data/spec/coverage/assets/0.10.0/application.js +1707 -0
- data/spec/coverage/assets/0.10.0/colorbox/border.png +0 -0
- data/spec/coverage/assets/0.10.0/colorbox/controls.png +0 -0
- data/spec/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
- data/spec/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
- data/spec/coverage/assets/0.10.0/favicon_green.png +0 -0
- data/spec/coverage/assets/0.10.0/favicon_red.png +0 -0
- data/spec/coverage/assets/0.10.0/favicon_yellow.png +0 -0
- data/spec/coverage/assets/0.10.0/loading.gif +0 -0
- data/spec/coverage/assets/0.10.0/magnify.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/index.html +72 -0
- data/spec/lib/aspect/has_attributes_spec.rb +247 -67
- data/spec/mutants.txt +12676 -0
- data/spec/spec_helper.rb +1 -0
- metadata +63 -19
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,72 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>Code coverage for Aspect</title>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
+
<script src='./assets/0.10.0/application.js' type='text/javascript'></script>
|
7
|
+
<link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_green.png" />
|
9
|
+
<link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div id="loading">
|
14
|
+
<img src="./assets/0.10.0/loading.gif" alt="loading"/>
|
15
|
+
</div>
|
16
|
+
<div id="wrapper" style="display:none;">
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2016-02-03T20:13:38-05:00">2016-02-03T20:13:38-05:00</abbr></div>
|
18
|
+
<ul class="group_tabs"></ul>
|
19
|
+
|
20
|
+
<div id="content">
|
21
|
+
<div class="file_list_container" id="AllFiles">
|
22
|
+
<h2>
|
23
|
+
<span class="group_name">All Files</span>
|
24
|
+
(<span class="covered_percent"><span class="green">100.0%</span></span>
|
25
|
+
covered at
|
26
|
+
<span class="covered_strength">
|
27
|
+
<span class="red">
|
28
|
+
0.0
|
29
|
+
</span>
|
30
|
+
</span> hits/line)
|
31
|
+
</h2>
|
32
|
+
<a name="AllFiles"></a>
|
33
|
+
<div>
|
34
|
+
<b>0</b> files in total.
|
35
|
+
<b>0.0</b> relevant lines.
|
36
|
+
<span class="green"><b>0.0</b> lines covered</span> and
|
37
|
+
<span class="red"><b>0.0</b> lines missed </span>
|
38
|
+
</div>
|
39
|
+
<table class="file_list">
|
40
|
+
<thead>
|
41
|
+
<tr>
|
42
|
+
<th>File</th>
|
43
|
+
<th>% covered</th>
|
44
|
+
<th>Lines</th>
|
45
|
+
<th>Relevant Lines</th>
|
46
|
+
<th>Lines covered</th>
|
47
|
+
<th>Lines missed</th>
|
48
|
+
<th>Avg. Hits / Line</th>
|
49
|
+
</tr>
|
50
|
+
</thead>
|
51
|
+
<tbody>
|
52
|
+
|
53
|
+
</tbody>
|
54
|
+
</table>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<div id="footer">
|
62
|
+
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.11.1
|
63
|
+
and simplecov-html v0.10.0<br/>
|
64
|
+
using RSpec
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class="source_files">
|
68
|
+
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
</body>
|
72
|
+
</html>
|
@@ -1,13 +1,19 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
+
class TestObject
|
4
|
+
include Aspect::HasAttributes
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@name = "foobar"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
3
11
|
describe Aspect::HasAttributes do
|
4
12
|
describe ".attribute" do
|
5
13
|
context "when no options are given" do
|
6
14
|
context "and no block is given" do
|
7
15
|
let(:instance) do
|
8
|
-
instance_class = Class.new do
|
9
|
-
include Aspect::HasAttributes
|
10
|
-
|
16
|
+
instance_class = Class.new(TestObject) do
|
11
17
|
attribute(:name)
|
12
18
|
end
|
13
19
|
|
@@ -15,7 +21,7 @@ describe Aspect::HasAttributes do
|
|
15
21
|
end
|
16
22
|
|
17
23
|
it "should define a getter and a setter which uses the argument given to set the instance variable" do
|
18
|
-
expect(instance.name).to eq(
|
24
|
+
expect(instance.name).to eq("foobar")
|
19
25
|
instance.name = "foo"
|
20
26
|
expect(instance.name).to eq("foo")
|
21
27
|
end
|
@@ -23,9 +29,7 @@ describe Aspect::HasAttributes do
|
|
23
29
|
|
24
30
|
context "and a block is given" do
|
25
31
|
let(:instance) do
|
26
|
-
instance_class = Class.new do
|
27
|
-
include Aspect::HasAttributes
|
28
|
-
|
32
|
+
instance_class = Class.new(TestObject) do
|
29
33
|
attribute(:name) { |value| value.to_s }
|
30
34
|
end
|
31
35
|
|
@@ -33,7 +37,7 @@ describe Aspect::HasAttributes do
|
|
33
37
|
end
|
34
38
|
|
35
39
|
it "should define a getter and a setter which uses the return value of the block to set the instance variable" do
|
36
|
-
expect(instance.name).to eq(
|
40
|
+
expect(instance.name).to eq("foobar")
|
37
41
|
instance.name = 123
|
38
42
|
expect(instance.name).to eq("123")
|
39
43
|
end
|
@@ -43,25 +47,73 @@ describe Aspect::HasAttributes do
|
|
43
47
|
context "when the :getter option is given" do
|
44
48
|
context "and it's truthy" do
|
45
49
|
let(:instance) do
|
46
|
-
instance_class = Class.new do
|
47
|
-
include Aspect::HasAttributes
|
48
|
-
|
50
|
+
instance_class = Class.new(TestObject) do
|
49
51
|
attribute(:name, getter: true)
|
50
52
|
end
|
51
53
|
|
52
54
|
instance_class.new
|
53
55
|
end
|
54
56
|
|
55
|
-
it "should define
|
56
|
-
expect(instance.name).to eq(
|
57
|
+
it "should define the getter" do
|
58
|
+
expect(instance.name).to eq("foobar")
|
59
|
+
end
|
60
|
+
|
61
|
+
context "and it's a Hash" do
|
62
|
+
context "and the :method option is passed" do
|
63
|
+
let(:instance) do
|
64
|
+
instance_class = Class.new(TestObject) do
|
65
|
+
attribute(:name, getter: { method: :capitalize })
|
66
|
+
end
|
67
|
+
|
68
|
+
instance_class.new
|
69
|
+
end
|
70
|
+
|
71
|
+
it "define the getter which calls the given method on the instance variable" do
|
72
|
+
expect(instance.name).to eq("Foobar")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "and the :instance_method option is passed" do
|
77
|
+
let(:instance) do
|
78
|
+
instance_class = Class.new(TestObject) do
|
79
|
+
attribute(:name, getter: { instance_method: :reversitalize })
|
80
|
+
|
81
|
+
def reversitalize(value)
|
82
|
+
value.reverse.capitalize
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
instance_class.new
|
87
|
+
end
|
88
|
+
|
89
|
+
it "define the getter which calls the given instance method, passing the instance variable as the argument" do
|
90
|
+
expect(instance.name).to eq("Raboof")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context "and both the :method and :instance_method options are passed" do
|
95
|
+
let(:instance) do
|
96
|
+
instance_class = Class.new(TestObject) do
|
97
|
+
attribute(:name, getter: { method: :capitalize, instance_method: :exclamationize })
|
98
|
+
|
99
|
+
def exclamationize(value)
|
100
|
+
"#{value}!"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
instance_class.new
|
105
|
+
end
|
106
|
+
|
107
|
+
it "define the getter which calls the given instance method, passing the result of the method called on the instance variable as the argument" do
|
108
|
+
expect(instance.name).to eq("Foobar!")
|
109
|
+
end
|
110
|
+
end
|
57
111
|
end
|
58
112
|
end
|
59
113
|
|
60
114
|
context "and it's falsey" do
|
61
115
|
let(:instance) do
|
62
|
-
instance_class = Class.new do
|
63
|
-
include Aspect::HasAttributes
|
64
|
-
|
116
|
+
instance_class = Class.new(TestObject) do
|
65
117
|
attribute(:name, getter: false)
|
66
118
|
end
|
67
119
|
|
@@ -69,7 +121,7 @@ describe Aspect::HasAttributes do
|
|
69
121
|
end
|
70
122
|
|
71
123
|
it "should not define a getter" do
|
72
|
-
expect(instance.respond_to
|
124
|
+
expect(instance).not_to respond_to(:name)
|
73
125
|
end
|
74
126
|
end
|
75
127
|
end
|
@@ -78,37 +130,90 @@ describe Aspect::HasAttributes do
|
|
78
130
|
context "and no block is given" do
|
79
131
|
context "and it's truthy" do
|
80
132
|
let(:instance) do
|
81
|
-
instance_class = Class.new do
|
82
|
-
include Aspect::HasAttributes
|
83
|
-
|
133
|
+
instance_class = Class.new(TestObject) do
|
84
134
|
attribute(:name, setter: true)
|
85
135
|
end
|
86
136
|
|
87
137
|
instance_class.new
|
88
138
|
end
|
89
139
|
|
90
|
-
it "should define a
|
91
|
-
expect(instance.name).to eq(
|
140
|
+
it "should define a setter which uses the argument given to set the instance variable" do
|
141
|
+
expect(instance.name).to eq("foobar")
|
92
142
|
instance.name = "foobar"
|
93
143
|
expect(instance.name).to eq("foobar")
|
94
144
|
end
|
145
|
+
|
146
|
+
context "and it's a Hash" do
|
147
|
+
context "and the :method option is passed" do
|
148
|
+
let(:instance) do
|
149
|
+
instance_class = Class.new(TestObject) do
|
150
|
+
attribute(:name, setter: { method: :capitalize })
|
151
|
+
end
|
152
|
+
|
153
|
+
instance_class.new
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should define the setter which calls the given method on the instance variable" do
|
157
|
+
expect(instance.name).to eq("foobar")
|
158
|
+
instance.name = "foobar"
|
159
|
+
expect(instance.name).to eq("Foobar")
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "and the :instance_method option is passed" do
|
164
|
+
let(:instance) do
|
165
|
+
instance_class = Class.new(TestObject) do
|
166
|
+
attribute(:name, setter: { instance_method: :reversitalize })
|
167
|
+
|
168
|
+
def reversitalize(value)
|
169
|
+
value.reverse.capitalize
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
instance_class.new
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should define the setter which calls the given instance method, passing the instance variable as the argument" do
|
177
|
+
expect(instance.name).to eq("foobar")
|
178
|
+
instance.name = "foobar"
|
179
|
+
expect(instance.name).to eq("Raboof")
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context "and both the :method and :instance_method options are passed" do
|
184
|
+
let(:instance) do
|
185
|
+
instance_class = Class.new(TestObject) do
|
186
|
+
attribute(:name, setter: { method: :capitalize, instance_method: :exclamationize })
|
187
|
+
|
188
|
+
def exclamationize(value)
|
189
|
+
"#{value}!"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
instance_class.new
|
194
|
+
end
|
195
|
+
|
196
|
+
it "define the setter which calls the given instance method, passing the result of the method called on the instance variable as the argument" do
|
197
|
+
expect(instance.name).to eq("foobar")
|
198
|
+
instance.name = "foobar"
|
199
|
+
expect(instance.name).to eq("Foobar!")
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
95
203
|
end
|
96
204
|
|
97
205
|
context "and it's falsey" do
|
98
206
|
let(:instance) do
|
99
|
-
instance_class = Class.new do
|
100
|
-
|
101
|
-
|
102
|
-
attribute(:admin, query: false)
|
207
|
+
instance_class = Class.new(TestObject) do
|
208
|
+
attribute(:name, setter: false)
|
103
209
|
end
|
104
210
|
|
105
211
|
instance_class.new
|
106
212
|
end
|
107
213
|
|
108
|
-
it "should define a getter and a setter
|
109
|
-
expect(instance
|
110
|
-
instance.
|
111
|
-
expect(instance.admin).to eq("truthy")
|
214
|
+
it "should define a getter and not a setter" do
|
215
|
+
expect(instance).to respond_to(:name)
|
216
|
+
expect(instance).not_to respond_to(:name=)
|
112
217
|
end
|
113
218
|
end
|
114
219
|
end
|
@@ -116,43 +221,90 @@ describe Aspect::HasAttributes do
|
|
116
221
|
context "and a block is given" do
|
117
222
|
context "and it's truthy" do
|
118
223
|
let(:instance) do
|
119
|
-
instance_class = Class.new do
|
120
|
-
|
121
|
-
|
122
|
-
attribute(:moderator, query: true)
|
123
|
-
attribute(:admin, query: true) { |value| @moderator && value }
|
224
|
+
instance_class = Class.new(TestObject) do
|
225
|
+
attribute(:name, setter: true) { |value| value.reverse }
|
124
226
|
end
|
125
227
|
|
126
228
|
instance_class.new
|
127
229
|
end
|
128
230
|
|
129
|
-
it "should define a
|
130
|
-
expect(instance.
|
131
|
-
|
132
|
-
instance.
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
231
|
+
it "should define a setter which uses the argument given to set the instance variable" do
|
232
|
+
expect(instance.name).to eq("foobar")
|
233
|
+
instance.name = "foobar"
|
234
|
+
expect(instance.name).to eq("raboof")
|
235
|
+
end
|
236
|
+
|
237
|
+
context "and it's a Hash" do
|
238
|
+
context "and the :method option is passed" do
|
239
|
+
let(:instance) do
|
240
|
+
instance_class = Class.new(TestObject) do
|
241
|
+
attribute(:name, setter: { method: :capitalize })
|
242
|
+
end
|
243
|
+
|
244
|
+
instance_class.new
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should define the setter which calls the given method on the instance variable" do
|
248
|
+
expect(instance.name).to eq("foobar")
|
249
|
+
instance.name = "foobar"
|
250
|
+
expect(instance.name).to eq("Foobar")
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
context "and the :instance_method option is passed" do
|
255
|
+
let(:instance) do
|
256
|
+
instance_class = Class.new(TestObject) do
|
257
|
+
attribute(:name, setter: { instance_method: :reversitalize })
|
258
|
+
|
259
|
+
def reversitalize(value)
|
260
|
+
value.reverse.capitalize
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
instance_class.new
|
265
|
+
end
|
266
|
+
|
267
|
+
it "should define the setter which calls the given instance method, passing the instance variable as the argument" do
|
268
|
+
expect(instance.name).to eq("foobar")
|
269
|
+
instance.name = "foobar"
|
270
|
+
expect(instance.name).to eq("Raboof")
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
context "and both the :method and :instance_method options are passed" do
|
275
|
+
let(:instance) do
|
276
|
+
instance_class = Class.new(TestObject) do
|
277
|
+
attribute(:name, setter: { method: :capitalize, instance_method: :exclamationize })
|
278
|
+
|
279
|
+
def exclamationize(value)
|
280
|
+
"#{value}!"
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
instance_class.new
|
285
|
+
end
|
286
|
+
|
287
|
+
it "define the setter which calls the given instance method, passing the result of the method called on the instance variable as the argument" do
|
288
|
+
expect(instance.name).to eq("foobar")
|
289
|
+
instance.name = "foobar"
|
290
|
+
expect(instance.name).to eq("Foobar!")
|
291
|
+
end
|
292
|
+
end
|
138
293
|
end
|
139
294
|
end
|
140
295
|
|
141
296
|
context "and it's falsey" do
|
142
297
|
let(:instance) do
|
143
|
-
instance_class = Class.new do
|
144
|
-
|
145
|
-
|
146
|
-
attribute(:admin, query: false) { "return value" }
|
298
|
+
instance_class = Class.new(TestObject) do
|
299
|
+
attribute(:name, setter: false)
|
147
300
|
end
|
148
301
|
|
149
302
|
instance_class.new
|
150
303
|
end
|
151
304
|
|
152
|
-
it "should define a getter and a setter
|
153
|
-
expect(instance
|
154
|
-
instance.
|
155
|
-
expect(instance.admin).to eq("return value")
|
305
|
+
it "should define a getter and not a setter" do
|
306
|
+
expect(instance).to respond_to(:name)
|
307
|
+
expect(instance).not_to respond_to(:name=)
|
156
308
|
end
|
157
309
|
end
|
158
310
|
end
|
@@ -162,9 +314,7 @@ describe Aspect::HasAttributes do
|
|
162
314
|
context "and no block is given" do
|
163
315
|
context "and it's truthy" do
|
164
316
|
let(:instance) do
|
165
|
-
instance_class = Class.new do
|
166
|
-
include Aspect::HasAttributes
|
167
|
-
|
317
|
+
instance_class = Class.new(TestObject) do
|
168
318
|
attribute(:admin, query: true)
|
169
319
|
end
|
170
320
|
|
@@ -180,9 +330,7 @@ describe Aspect::HasAttributes do
|
|
180
330
|
|
181
331
|
context "and it's falsey" do
|
182
332
|
let(:instance) do
|
183
|
-
instance_class = Class.new do
|
184
|
-
include Aspect::HasAttributes
|
185
|
-
|
333
|
+
instance_class = Class.new(TestObject) do
|
186
334
|
attribute(:admin, query: false)
|
187
335
|
end
|
188
336
|
|
@@ -200,9 +348,7 @@ describe Aspect::HasAttributes do
|
|
200
348
|
context "and a block is given" do
|
201
349
|
context "and it's truthy" do
|
202
350
|
let(:instance) do
|
203
|
-
instance_class = Class.new do
|
204
|
-
include Aspect::HasAttributes
|
205
|
-
|
351
|
+
instance_class = Class.new(TestObject) do
|
206
352
|
attribute(:moderator, query: true)
|
207
353
|
attribute(:admin, query: true) { |value| @moderator && value }
|
208
354
|
end
|
@@ -224,9 +370,7 @@ describe Aspect::HasAttributes do
|
|
224
370
|
|
225
371
|
context "and it's falsey" do
|
226
372
|
let(:instance) do
|
227
|
-
instance_class = Class.new do
|
228
|
-
include Aspect::HasAttributes
|
229
|
-
|
373
|
+
instance_class = Class.new(TestObject) do
|
230
374
|
attribute(:admin, query: false) { "return value" }
|
231
375
|
end
|
232
376
|
|
@@ -245,9 +389,7 @@ describe Aspect::HasAttributes do
|
|
245
389
|
|
246
390
|
describe "#update_attributes" do
|
247
391
|
let(:instance) do
|
248
|
-
class_instance = Class.new do
|
249
|
-
include Aspect::HasAttributes
|
250
|
-
|
392
|
+
class_instance = Class.new(TestObject) do
|
251
393
|
attr_accessor :name
|
252
394
|
attr_accessor :age
|
253
395
|
end
|
@@ -262,4 +404,42 @@ describe Aspect::HasAttributes do
|
|
262
404
|
expect(instance.age).to eq(123)
|
263
405
|
end
|
264
406
|
end
|
407
|
+
|
408
|
+
context "when included from the method", pending: true do
|
409
|
+
context "and the :method option is passed" do
|
410
|
+
context "and the values are not nil" do
|
411
|
+
let(:instance) do
|
412
|
+
class_instance = Class.new do
|
413
|
+
include Aspect::HasAttributes(method: { define: :atr, update: :mass_assign })
|
414
|
+
end
|
415
|
+
|
416
|
+
class_instance.new
|
417
|
+
end
|
418
|
+
|
419
|
+
it "should update the attributes on the instance" do
|
420
|
+
expect(instance.class).to respond_to("atr")
|
421
|
+
expect(instance.class).not_to respond_to("attribute")
|
422
|
+
expect(instance).to respond_to("mass_assign")
|
423
|
+
expect(instance).not_to respond_to("update_attributes")
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
427
|
+
context "and the values are nil" do
|
428
|
+
let(:instance) do
|
429
|
+
class_instance = Class.new do
|
430
|
+
include Aspect::HasAttributes(method: { define: nil, update: nil })
|
431
|
+
end
|
432
|
+
|
433
|
+
class_instance.new
|
434
|
+
end
|
435
|
+
|
436
|
+
it "should update the attributes on the instance" do
|
437
|
+
expect(instance.class).not_to respond_to("atr")
|
438
|
+
expect(instance.class).not_to respond_to("attribute")
|
439
|
+
expect(instance).not_to respond_to("mass_assign")
|
440
|
+
expect(instance).not_to respond_to("update_attributes")
|
441
|
+
end
|
442
|
+
end
|
443
|
+
end
|
444
|
+
end
|
265
445
|
end
|