ardb 0.12.0 → 0.13.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/lib/ardb/record_spy.rb +15 -5
- data/lib/ardb/version.rb +1 -1
- data/test/unit/record_spy_tests.rb +19 -0
- metadata +4 -4
data/lib/ardb/record_spy.rb
CHANGED
@@ -20,11 +20,19 @@ module Ardb
|
|
20
20
|
|
21
21
|
attr_reader :associations, :callbacks, :validations
|
22
22
|
|
23
|
-
[ :belongs_to, :
|
23
|
+
[ :belongs_to, :has_one, :has_many ].each do |method_name|
|
24
24
|
|
25
|
-
define_method(method_name) do
|
25
|
+
define_method(method_name) do |assoc_name, *args|
|
26
26
|
@associations ||= []
|
27
|
-
|
27
|
+
|
28
|
+
define_method(assoc_name) do
|
29
|
+
instance_variable_get("@#{assoc_name}") || (method_name == :has_many ? [] : nil)
|
30
|
+
end
|
31
|
+
define_method("#{assoc_name}=") do |value|
|
32
|
+
instance_variable_set("@#{assoc_name}", value)
|
33
|
+
end
|
34
|
+
|
35
|
+
@associations << Association.new(method_name, assoc_name, *args)
|
28
36
|
end
|
29
37
|
|
30
38
|
end
|
@@ -83,6 +91,8 @@ module Ardb
|
|
83
91
|
|
84
92
|
module InstanceMethods
|
85
93
|
|
94
|
+
attr_accessor :id
|
95
|
+
|
86
96
|
def update_column(col, value)
|
87
97
|
self.send("#{col}=", value)
|
88
98
|
end
|
@@ -92,10 +102,10 @@ module Ardb
|
|
92
102
|
class Association
|
93
103
|
attr_reader :type, :name, :options
|
94
104
|
|
95
|
-
def initialize(type, name, options)
|
105
|
+
def initialize(type, name, options = nil)
|
96
106
|
@type = type.to_sym
|
97
107
|
@name = name
|
98
|
-
@options = options
|
108
|
+
@options = options || {}
|
99
109
|
end
|
100
110
|
end
|
101
111
|
|
data/lib/ardb/version.rb
CHANGED
@@ -147,6 +147,7 @@ module Ardb::RecordSpy
|
|
147
147
|
class InstanceTests < UnitTests
|
148
148
|
subject{ @instance }
|
149
149
|
|
150
|
+
should have_accessors :id
|
150
151
|
should have_imeths :update_column
|
151
152
|
|
152
153
|
should "allow spying the update_column method by just writing the value" do
|
@@ -156,11 +157,29 @@ module Ardb::RecordSpy
|
|
156
157
|
assert_equal 'updated', subject.name
|
157
158
|
end
|
158
159
|
|
160
|
+
should "have accessors for each association defined" do
|
161
|
+
assert_nil subject.bt_thing
|
162
|
+
subject.bt_thing = 'something'
|
163
|
+
assert_equal 'something', subject.bt_thing
|
164
|
+
|
165
|
+
assert_nil subject.ho_thing
|
166
|
+
subject.ho_thing = 'other thing'
|
167
|
+
assert_equal 'other thing', subject.ho_thing
|
168
|
+
|
169
|
+
assert_empty subject.hm_things
|
170
|
+
subject.hm_things = [1,2,3]
|
171
|
+
assert_equal [1,2,3], subject.hm_things
|
172
|
+
end
|
173
|
+
|
159
174
|
end
|
160
175
|
|
161
176
|
class MyRecord
|
162
177
|
include Ardb::RecordSpy
|
163
178
|
attr_accessor :name
|
179
|
+
|
180
|
+
belongs_to :bt_thing
|
181
|
+
has_one :ho_thing
|
182
|
+
has_many :hm_things
|
164
183
|
end
|
165
184
|
|
166
185
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ardb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 13
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.13.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-09-
|
19
|
+
date: 2013-09-27 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: assert
|