ardm 0.4.0.ar427 → 0.4.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/Gemfile +5 -6
- data/lib/ardm/ar.rb +0 -21
- data/lib/ardm/ar/property.rb +11 -47
- data/lib/ardm/ar/relation.rb +20 -82
- data/lib/ardm/property/enum.rb +4 -10
- data/lib/ardm/version.rb +1 -1
- data/spec/integration/enum_spec.rb +14 -5
- data/spec/integration/ip_address_spec.rb +0 -4
- data/spec/shared/finder_shared.rb +6 -56
- metadata +5 -6
data/Gemfile
CHANGED
@@ -14,15 +14,14 @@ group :test do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
group :ar do
|
17
|
-
gem 'activerecord', '
|
17
|
+
gem 'activerecord', '~> 4.0.0'
|
18
18
|
end
|
19
19
|
|
20
20
|
group :dm do
|
21
|
-
gem '
|
21
|
+
gem 'dm-core', '~> 1.2'
|
22
22
|
gem 'dm-sqlite-adapter', '~> 1.2'
|
23
|
-
|
24
|
-
gem "ardm-types", '~> 1.1'
|
23
|
+
gem 'dm-types', '~> 1.2', git: "git://github.com/engineyard/dm-types.git", branch: "1.2-multijson"
|
25
24
|
gem 'dm-validations', '~> 1.2'
|
26
|
-
gem '
|
27
|
-
gem '
|
25
|
+
gem 'dm-transactions', '~> 1.2'
|
26
|
+
gem 'dm-migrations', '~> 1.2'
|
28
27
|
end
|
data/lib/ardm/ar.rb
CHANGED
@@ -45,24 +45,3 @@ end
|
|
45
45
|
::ActiveRecord::Relation.class_eval do
|
46
46
|
include Ardm::Ar::Relation
|
47
47
|
end
|
48
|
-
|
49
|
-
ActiveRecord::Scoping::Named::ClassMethods.class_eval do
|
50
|
-
def all(options = {})
|
51
|
-
scope_of_all = if current_scope
|
52
|
-
current_scope.clone
|
53
|
-
else
|
54
|
-
default_scoped
|
55
|
-
end
|
56
|
-
if options.any?
|
57
|
-
scope_of_all.all.all(options)
|
58
|
-
else
|
59
|
-
scope_of_all
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
# ActiveRecord::ConnectionAdapters::Column.class_eval do
|
65
|
-
# def default=(arg)
|
66
|
-
# @default = arg
|
67
|
-
# end
|
68
|
-
# end
|
data/lib/ardm/ar/property.rb
CHANGED
@@ -113,61 +113,28 @@ module Ardm
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def columns
|
116
|
-
@columns ||= _ardm_load_columns
|
116
|
+
@columns ||= _ardm_load_columns
|
117
117
|
end
|
118
118
|
|
119
|
-
def _ardm_load_columns
|
120
|
-
|
121
|
-
properties.each do |property|
|
119
|
+
def _ardm_load_columns
|
120
|
+
properties.map do |property|
|
122
121
|
sql_type = connection.type_to_sql(
|
123
122
|
property.dump_as.name.to_sym,
|
124
123
|
property.options[:limit],
|
125
124
|
property.options[:precision],
|
126
125
|
property.options[:scale]
|
127
126
|
)
|
128
|
-
if column = ar_columns.detect{|c| c.name.to_s == property.name.to_s}
|
129
|
-
#TODO: property.key?
|
130
|
-
err_prefix = "WARNING: DM/AR mismatch for #{self.name}.#{property.name.to_s} on"
|
131
|
-
|
132
|
-
#TODO: do some fuzzy matching so we only get warnings when there is a clear conflict:
|
133
|
-
# if column.sql_type != sql_type
|
134
|
-
# puts "#{err_prefix} sql_type #{sql_type} vs #{column.sql_type}"
|
135
|
-
# end
|
136
|
-
|
137
|
-
if column.null != property.allow_nil?
|
138
|
-
puts "#{err_prefix} allow_nil #{property.allow_nil?} vs #{column.null}"
|
139
|
-
end
|
140
127
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
128
|
+
column = ::ActiveRecord::ConnectionAdapters::Column.new(
|
129
|
+
property.field.to_s, #property.name.to_s,
|
130
|
+
nil,#property.dump(property.default),
|
131
|
+
sql_type,
|
132
|
+
property.allow_nil?
|
133
|
+
)
|
146
134
|
|
147
|
-
|
148
|
-
|
149
|
-
end
|
135
|
+
column.primary = property.key?
|
136
|
+
column
|
150
137
|
end
|
151
|
-
to_return
|
152
|
-
|
153
|
-
# WAS:
|
154
|
-
# sql_type = connection.type_to_sql(
|
155
|
-
# property.dump_as.name.to_sym,
|
156
|
-
# property.options[:limit],
|
157
|
-
# property.options[:precision],
|
158
|
-
# property.options[:scale]
|
159
|
-
# )
|
160
|
-
#
|
161
|
-
# column = ::ActiveRecord::ConnectionAdapters::Column.new(
|
162
|
-
# property.field.to_s, #property.name.to_s, #name
|
163
|
-
# nil,#property.dump(property.default), #default
|
164
|
-
# property.cast_type,
|
165
|
-
# sql_type, #sql_type
|
166
|
-
# property.allow_nil? #null
|
167
|
-
# )
|
168
|
-
#
|
169
|
-
# column.primary = property.key?
|
170
|
-
# column
|
171
138
|
end
|
172
139
|
|
173
140
|
# Hook into the query system when we would be finding composed_of
|
@@ -342,9 +309,6 @@ module Ardm
|
|
342
309
|
end
|
343
310
|
read_attribute property.field
|
344
311
|
end
|
345
|
-
rescue => e
|
346
|
-
puts "ERROR on attribute_get #{self.class.name}.#{name}"
|
347
|
-
raise e
|
348
312
|
end
|
349
313
|
|
350
314
|
# This not the same as write_attribute in AR
|
data/lib/ardm/ar/relation.rb
CHANGED
@@ -11,19 +11,9 @@ module Ardm
|
|
11
11
|
alias_method :update_without_ardm, :update
|
12
12
|
alias_method :first_without_ardm, :first
|
13
13
|
alias_method :first_without_ardm!, :first!
|
14
|
-
alias_method :equal_without_ardm, :==
|
15
|
-
alias_method :method_missing_without_ardm, :method_missing
|
16
14
|
|
17
15
|
# we need to overrite the implementation in the class
|
18
16
|
class_eval do
|
19
|
-
def ==(other)
|
20
|
-
result = self.equal_without_ardm(other)
|
21
|
-
if !result && other.is_a?(Relation)
|
22
|
-
result ||= self.equal_without_ardm(other.to_a)
|
23
|
-
end
|
24
|
-
result
|
25
|
-
end
|
26
|
-
|
27
17
|
def update(*a)
|
28
18
|
if a.size == 1
|
29
19
|
# need to translate attributes
|
@@ -70,20 +60,15 @@ module Ardm
|
|
70
60
|
def first_or_initialize(attributes = nil, options = {}, &block)
|
71
61
|
all(attributes).first || all(attributes).create(options, &block)
|
72
62
|
end
|
73
|
-
|
74
|
-
def method_missing(method, *args, &block)
|
75
|
-
if assoc = self.model.reflect_on_association(method)
|
76
|
-
puts "WARNING: suspected query chain (not supported) a #{self.model.name} #{assoc.macro} '#{method}'"
|
77
|
-
puts caller[0,3]
|
78
|
-
if ENV["RAISE_ON_QUERY_CHAIN_CALLS"]
|
79
|
-
raise "WARNING: suspected query chain (not supported) a #{self.model.name} #{assoc.macro} '#{method}'"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
method_missing_without_ardm(method, *args, &block)
|
83
|
-
end
|
84
63
|
end
|
85
64
|
end
|
86
65
|
|
66
|
+
def method_missing(meth, *a, &b)
|
67
|
+
super
|
68
|
+
rescue => e
|
69
|
+
raise NoMethodError, "Relation chain? #{self}.#{meth}\n#{e}"
|
70
|
+
end
|
71
|
+
|
87
72
|
def all(options={})
|
88
73
|
apply_finder_options(options)
|
89
74
|
end
|
@@ -116,33 +101,21 @@ module Ardm
|
|
116
101
|
end
|
117
102
|
|
118
103
|
conditions.each do |key, value|
|
119
|
-
if
|
120
|
-
value = value.to_a
|
121
|
-
end
|
122
|
-
key_to_reflect_on = key
|
123
|
-
if key.is_a?(Ardm::Query::Operator)
|
124
|
-
key_to_reflect_on = key.target
|
125
|
-
end
|
126
|
-
if assoc = relation.reflect_on_association(key_to_reflect_on)
|
104
|
+
if assoc = relation.reflect_on_association(key)
|
127
105
|
conditions.delete(key)
|
128
106
|
# strip out assocations
|
129
107
|
case assoc.macro
|
130
108
|
when :belongs_to
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
id = value.is_a?(Hash) ? value.with_indifferent_access[:id] : value
|
136
|
-
relation = if value.is_a?(::ActiveRecord::Relation)
|
137
|
-
if value.values.empty?
|
138
|
-
relation.where.not(assoc.foreign_key => nil)
|
139
|
-
else
|
140
|
-
relation.where(assoc.foreign_key => value)
|
141
|
-
end
|
109
|
+
id = value.is_a?(Hash) ? value.with_indifferent_access[:id] : value
|
110
|
+
relation = if value.is_a?(::ActiveRecord::Relation)
|
111
|
+
if value.values.empty?
|
112
|
+
relation.where.not(assoc.foreign_key => nil)
|
142
113
|
else
|
143
|
-
relation.where(assoc.foreign_key =>
|
114
|
+
relation.where(assoc.foreign_key => value)
|
144
115
|
end
|
145
|
-
|
116
|
+
else
|
117
|
+
relation.where(assoc.foreign_key => id)
|
118
|
+
end
|
146
119
|
when :has_one
|
147
120
|
foreign_class = assoc.options[:class_name].constantize
|
148
121
|
foreign_key = assoc.foreign_key
|
@@ -154,47 +127,21 @@ module Ardm
|
|
154
127
|
end
|
155
128
|
|
156
129
|
relation = if value.is_a?(::ActiveRecord::Base)
|
157
|
-
relation.where(parent_key => value.send(foreign_key))
|
130
|
+
relation.where(parent_key => value.send(assoc.foreign_key))
|
158
131
|
elsif value.is_a?(::ActiveRecord::Relation)
|
159
132
|
relation.where(parent_key => value.select(foreign_key))
|
160
133
|
elsif value.nil?
|
161
|
-
|
162
|
-
relation.where(parent_key => foreign_class.select(foreign_key).compact.map(&foreign_key).to_a)
|
163
|
-
else
|
164
|
-
relation.where.not(parent_key => foreign_class.select(foreign_key).compact.map(&foreign_key).to_a)
|
165
|
-
end
|
166
|
-
#should EQ:
|
167
|
-
# relation.select{|o| o.send(assoc.name) == value}
|
168
|
-
elsif value.is_a?(::Array) && value.first.is_a?(::ActiveRecord::Base)
|
169
|
-
foreign_key_values = value.map(&foreign_key.to_sym)
|
170
|
-
relation.where(parent_key => foreign_key_values)
|
134
|
+
relation.where.not(parent_key => foreign_class.select(foreign_key).where.not(foreign_key => value))
|
171
135
|
else
|
172
136
|
relation.where(parent_key => foreign_class.select(foreign_key).where(value))
|
173
137
|
end
|
174
138
|
when :has_many
|
175
|
-
|
176
|
-
raise "Unsupported query on has_many through (#{options.inspect})"
|
177
|
-
end
|
178
|
-
foreign_class = assoc.options[:class_name] && assoc.options[:class_name].constantize
|
139
|
+
foreign_class = assoc.options[:class_name].constantize
|
179
140
|
foreign_key = assoc.foreign_key
|
180
141
|
parent_key = assoc.options[:child_key] || klass.primary_key
|
181
142
|
|
182
|
-
relation = if value.is_a?(::ActiveRecord::
|
183
|
-
relation.where(
|
184
|
-
elsif value.is_a?(Hash)
|
185
|
-
relation.where(id: foreign_class.where(parent_key => value[parent_key.to_s]).map(&foreign_key))
|
186
|
-
elsif value.is_a?(::ActiveRecord::Relation)
|
187
|
-
relation.where(id: foreign_class.where(parent_key => value.select(parent_key).to_a).map(&foreign_key))
|
188
|
-
elsif value.is_a?(Array)
|
189
|
-
relation.where(id: foreign_class.where(parent_key => value.map{|v| v.send(parent_key)}).map(&foreign_key))
|
190
|
-
elsif value.nil?
|
191
|
-
raise "Unsupported query on has_many (#{options.inspect})"
|
192
|
-
#better to fail than return the wrong thing
|
193
|
-
# if key.is_a?(Ardm::Query::Operator) && (key.operator == :not_eq)
|
194
|
-
# relation.where(parent_key => foreign_class.select(foreign_key).compact.map(&foreign_key).to_a)
|
195
|
-
# else
|
196
|
-
# relation.where.not(parent_key => foreign_class.select(foreign_key).compact.map(&foreign_key).to_a)
|
197
|
-
# end
|
143
|
+
relation = if value.is_a?(::ActiveRecord::Relation)
|
144
|
+
relation.where(foreign_key => value)
|
198
145
|
else
|
199
146
|
relation.where(parent_key => foreign_class.select(foreign_class.primary_key).where.not(foreign_key => value))
|
200
147
|
end
|
@@ -247,15 +194,6 @@ module Ardm
|
|
247
194
|
end
|
248
195
|
end
|
249
196
|
|
250
|
-
def query
|
251
|
-
self.to_sql
|
252
|
-
end
|
253
|
-
|
254
|
-
def ==(other)
|
255
|
-
puts "COMPARING to #{other}"
|
256
|
-
super(other)
|
257
|
-
end
|
258
|
-
|
259
197
|
def destroy!
|
260
198
|
delete_all
|
261
199
|
end
|
data/lib/ardm/property/enum.rb
CHANGED
@@ -9,8 +9,6 @@ module Ardm
|
|
9
9
|
load_as ::Object
|
10
10
|
dump_as ::Integer
|
11
11
|
|
12
|
-
class InvalidValueError < StandardError; end
|
13
|
-
|
14
12
|
def initialize(model, name, options = {})
|
15
13
|
@flag_map = {}
|
16
14
|
|
@@ -27,18 +25,14 @@ module Ardm
|
|
27
25
|
end
|
28
26
|
|
29
27
|
def load(value)
|
30
|
-
flag_map[value.to_i]
|
28
|
+
flag_map[value.to_i]
|
31
29
|
end
|
32
30
|
|
33
31
|
def dump(value)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
if value && !result
|
39
|
-
raise InvalidValueError.new("Invalid value for ENUM #{self.model.name}.#{name}, given: #{value}")
|
32
|
+
case value
|
33
|
+
when ::Array then value.collect { |v| dump(v) }
|
34
|
+
else flag_map.invert[typecast(value)]
|
40
35
|
end
|
41
|
-
result
|
42
36
|
end
|
43
37
|
|
44
38
|
def typecast(value)
|
data/lib/ardm/version.rb
CHANGED
@@ -57,13 +57,22 @@ try_spec do
|
|
57
57
|
|
58
58
|
describe 'with value unknown to enumeration property' do
|
59
59
|
before do
|
60
|
-
@resource = Ardm::Fixtures::Ticket.new
|
60
|
+
@resource = Ardm::Fixtures::Ticket.new(:status => :undecided)
|
61
|
+
@resource.valid?
|
61
62
|
end
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
# TODO: consider sharing shared spec exampels with dm-validations,
|
65
|
+
# which has 'invalid model' shared group
|
66
|
+
it 'is invalid (auto validation for :within kicks in)' do
|
67
|
+
expect(@resource).not_to be_valid
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'has errors' do
|
71
|
+
expect(@resource.errors).not_to be_empty
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'has a meaningful error message on invalid property' do
|
75
|
+
expect(@resource.errors[:status]).to include('must be one of unconfirmed, confirmed, assigned, resolved, not_applicable')
|
67
76
|
end
|
68
77
|
end
|
69
78
|
end
|
@@ -25,9 +25,9 @@ shared_examples 'Finder Interface' do
|
|
25
25
|
skip(message) if condition
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
it 'should be Enumerable', :dm do
|
29
|
+
expect(@articles).to be_kind_of(Enumerable)
|
30
|
+
end
|
31
31
|
|
32
32
|
[ :[], :slice ].each do |method|
|
33
33
|
it { expect(@articles).to respond_to(method) }
|
@@ -60,7 +60,6 @@ shared_examples 'Finder Interface' do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should return a Collection', :dm do
|
63
|
-
skip "doesn't return a collection anymore..."
|
64
63
|
expect(@return).to be_kind_of(Ardm::Collection)
|
65
64
|
@return.should be_kind_of(Ardm::Collection)
|
66
65
|
end
|
@@ -70,7 +69,6 @@ shared_examples 'Finder Interface' do
|
|
70
69
|
end
|
71
70
|
|
72
71
|
it 'should scope the Collection', :dm do
|
73
|
-
skip "can't call reload on a non-collection"
|
74
72
|
expect(@resources.reload).to eq(@copy.entries.send(method, 5, 5))
|
75
73
|
end
|
76
74
|
end
|
@@ -81,7 +79,6 @@ shared_examples 'Finder Interface' do
|
|
81
79
|
end
|
82
80
|
|
83
81
|
it 'should return a Collection', :dm do
|
84
|
-
skip "doesn't return a collection anymore..."
|
85
82
|
expect(@return).to be_kind_of(Ardm::Collection)
|
86
83
|
end
|
87
84
|
|
@@ -90,7 +87,6 @@ shared_examples 'Finder Interface' do
|
|
90
87
|
end
|
91
88
|
|
92
89
|
it 'should scope the Collection', :dm do
|
93
|
-
skip "can't call reload on a non-collection"
|
94
90
|
expect(@resources.reload).to eq(@copy.entries.send(method, 5..10))
|
95
91
|
end
|
96
92
|
end
|
@@ -113,7 +109,6 @@ shared_examples 'Finder Interface' do
|
|
113
109
|
|
114
110
|
describe 'with a negative offset and length' do
|
115
111
|
before do
|
116
|
-
skip "doesn't return a collection anymore..."
|
117
112
|
@return = @resources = @articles.send(method, -5, 5)
|
118
113
|
end
|
119
114
|
|
@@ -126,7 +121,6 @@ shared_examples 'Finder Interface' do
|
|
126
121
|
end
|
127
122
|
|
128
123
|
it 'should scope the Collection', :dm do
|
129
|
-
skip "can't call reload on a non-collection"
|
130
124
|
expect(@resources.reload).to eq(@copy.entries.send(method, -5, 5))
|
131
125
|
end
|
132
126
|
end
|
@@ -137,7 +131,6 @@ shared_examples 'Finder Interface' do
|
|
137
131
|
end
|
138
132
|
|
139
133
|
it 'should return a Collection', :dm do
|
140
|
-
skip "doesn't return a collection anymore..."
|
141
134
|
expect(@return).to be_kind_of(Ardm::Collection)
|
142
135
|
end
|
143
136
|
|
@@ -146,7 +139,6 @@ shared_examples 'Finder Interface' do
|
|
146
139
|
end
|
147
140
|
|
148
141
|
it 'should scope the Collection', :dm do
|
149
|
-
skip "can't call reload on a non-collection"
|
150
142
|
expect(@resources.reload).to eq(@copy.entries.send(method, -5..-2))
|
151
143
|
end
|
152
144
|
end
|
@@ -157,7 +149,6 @@ shared_examples 'Finder Interface' do
|
|
157
149
|
end
|
158
150
|
|
159
151
|
it 'should return a Collection', :dm do
|
160
|
-
skip "doesn't return a collection anymore..."
|
161
152
|
expect(@return).to be_kind_of(Ardm::Collection)
|
162
153
|
end
|
163
154
|
|
@@ -188,12 +179,10 @@ shared_examples 'Finder Interface' do
|
|
188
179
|
end
|
189
180
|
|
190
181
|
it 'should return a Collection' do
|
191
|
-
skip "doesn't return a collection anymore..."
|
192
182
|
expect(@return).to be_kind_of(Ardm::Collection)
|
193
183
|
end
|
194
184
|
|
195
185
|
it 'should be empty' do
|
196
|
-
skip "it's nil"
|
197
186
|
expect(@return).to be_empty
|
198
187
|
end
|
199
188
|
end
|
@@ -204,12 +193,10 @@ shared_examples 'Finder Interface' do
|
|
204
193
|
end
|
205
194
|
|
206
195
|
it 'should return a Collection' do
|
207
|
-
skip "doesn't return a collection anymore..."
|
208
196
|
expect(@return).to be_kind_of(Ardm::Collection)
|
209
197
|
end
|
210
198
|
|
211
199
|
it 'should be empty' do
|
212
|
-
skip "it's nil"
|
213
200
|
expect(@return).to be_empty
|
214
201
|
end
|
215
202
|
end
|
@@ -315,7 +302,6 @@ shared_examples 'Finder Interface' do
|
|
315
302
|
|
316
303
|
describe 'with a query that is out of range', :dm do
|
317
304
|
it 'should raise an exception' do
|
318
|
-
skip "doesn't raise"
|
319
305
|
expect {
|
320
306
|
@articles.all(:limit => 10).all(:offset => 10)
|
321
307
|
}.to raise_error(RangeError, 'offset 10 and limit 0 are outside allowed range')
|
@@ -337,7 +323,6 @@ shared_examples 'Finder Interface' do
|
|
337
323
|
end
|
338
324
|
|
339
325
|
it 'should have a valid query', :dm do
|
340
|
-
skip "undefined method `valid?' for #<String"
|
341
326
|
expect(@return.query).to be_valid
|
342
327
|
end
|
343
328
|
end
|
@@ -356,7 +341,6 @@ shared_examples 'Finder Interface' do
|
|
356
341
|
end
|
357
342
|
|
358
343
|
it 'should have a valid query', :dm do
|
359
|
-
skip "undefined method `valid?' for #<String"
|
360
344
|
expect(@return.query).to be_valid
|
361
345
|
end
|
362
346
|
end
|
@@ -366,6 +350,7 @@ shared_examples 'Finder Interface' do
|
|
366
350
|
@collection = @article_model.all(
|
367
351
|
Hash[ @article_model.key.zip(@original.key) ]
|
368
352
|
)
|
353
|
+
|
369
354
|
@return = @articles.all(:original => @collection)
|
370
355
|
end
|
371
356
|
|
@@ -378,7 +363,6 @@ shared_examples 'Finder Interface' do
|
|
378
363
|
end
|
379
364
|
|
380
365
|
it 'should have a valid query', :dm do
|
381
|
-
skip "undefined method `valid?' for #<String"
|
382
366
|
expect(@return.query).to be_valid
|
383
367
|
end
|
384
368
|
|
@@ -398,7 +382,6 @@ shared_examples 'Finder Interface' do
|
|
398
382
|
end
|
399
383
|
|
400
384
|
it 'should not have a valid query', :dm do
|
401
|
-
skip "undefined method `valid?' for #<String"
|
402
385
|
expect(@return.query).not_to be_valid
|
403
386
|
end
|
404
387
|
end
|
@@ -417,7 +400,6 @@ shared_examples 'Finder Interface' do
|
|
417
400
|
end
|
418
401
|
|
419
402
|
it 'should have a valid query', :dm do
|
420
|
-
skip "undefined method `valid?' for #<String"
|
421
403
|
expect(@return.query).to be_valid
|
422
404
|
end
|
423
405
|
|
@@ -446,7 +428,6 @@ shared_examples 'Finder Interface' do
|
|
446
428
|
end
|
447
429
|
|
448
430
|
it 'should have a valid query', :dm do
|
449
|
-
skip "undefined method `valid?' for #<String"
|
450
431
|
expect(@return.query).to be_valid
|
451
432
|
end
|
452
433
|
|
@@ -463,7 +444,6 @@ shared_examples 'Finder Interface' do
|
|
463
444
|
|
464
445
|
describe 'with a Hash' do
|
465
446
|
before do
|
466
|
-
skip "query with Hash is not currently supported"
|
467
447
|
@return = @articles.all(:previous => @new.attributes)
|
468
448
|
end
|
469
449
|
|
@@ -476,7 +456,6 @@ shared_examples 'Finder Interface' do
|
|
476
456
|
end
|
477
457
|
|
478
458
|
it 'should have a valid query', :dm do
|
479
|
-
skip "undefined method `valid?' for #<String"
|
480
459
|
expect(@return.query).to be_valid
|
481
460
|
end
|
482
461
|
end
|
@@ -495,7 +474,6 @@ shared_examples 'Finder Interface' do
|
|
495
474
|
end
|
496
475
|
|
497
476
|
it 'should have a valid query', :dm do
|
498
|
-
skip "undefined method `valid?' for #<String"
|
499
477
|
expect(@return.query).to be_valid
|
500
478
|
end
|
501
479
|
end
|
@@ -518,7 +496,6 @@ shared_examples 'Finder Interface' do
|
|
518
496
|
end
|
519
497
|
|
520
498
|
it 'should have a valid query', :dm do
|
521
|
-
skip "undefined method `valid?' for #<String"
|
522
499
|
expect(@return.query).to be_valid
|
523
500
|
end
|
524
501
|
end
|
@@ -537,7 +514,6 @@ shared_examples 'Finder Interface' do
|
|
537
514
|
end
|
538
515
|
|
539
516
|
it 'should not have a valid query', :dm do
|
540
|
-
skip "query is just a string now..."
|
541
517
|
expect(@return.query).not_to be_valid
|
542
518
|
end
|
543
519
|
end
|
@@ -562,7 +538,6 @@ shared_examples 'Finder Interface' do
|
|
562
538
|
end
|
563
539
|
|
564
540
|
it 'should have a valid query', :dm do
|
565
|
-
skip "undefined method `valid?' for #<String"
|
566
541
|
expect(@return.query).to be_valid
|
567
542
|
end
|
568
543
|
|
@@ -571,7 +546,6 @@ shared_examples 'Finder Interface' do
|
|
571
546
|
# ar:
|
572
547
|
# SELECT "articles".* FROM "articles" WHERE ("articles"."original_id" IS NOT NULL)
|
573
548
|
# SELECT "articles".* FROM "articles" WHERE ("articles"."id" NOT IN (SELECT original_id FROM "articles" WHERE ("articles"."original_id" IS NOT NULL)))
|
574
|
-
skip "TODO: come back here"
|
575
549
|
puts "@return:#{@return.to_sql}"
|
576
550
|
puts "negated:#{@articles.all(:previous.not => @article_model.all(:original.not => nil)).to_sql}"
|
577
551
|
expect(@return).to eq(@articles.all(:previous.not => @article_model.all(:original.not => nil)))
|
@@ -592,7 +566,6 @@ shared_examples 'Finder Interface' do
|
|
592
566
|
end
|
593
567
|
|
594
568
|
it 'should have a valid query', :dm do
|
595
|
-
skip "undefined method `valid?' for #<String"
|
596
569
|
expect(@return.query).to be_valid
|
597
570
|
end
|
598
571
|
|
@@ -616,12 +589,11 @@ shared_examples 'Finder Interface' do
|
|
616
589
|
expect(@return).to be_kind_of(Ardm::Collection)
|
617
590
|
end
|
618
591
|
|
619
|
-
it 'should be expected Resources'
|
592
|
+
it 'should be expected Resources' do
|
620
593
|
expect(@return).to eq([ @article ])
|
621
594
|
end
|
622
595
|
|
623
596
|
it 'should have a valid query', :dm do
|
624
|
-
skip "undefined method `valid?' for #<String"
|
625
597
|
expect(@return.query).to be_valid
|
626
598
|
end
|
627
599
|
end
|
@@ -640,7 +612,6 @@ shared_examples 'Finder Interface' do
|
|
640
612
|
end
|
641
613
|
|
642
614
|
it 'should have a valid query', :dm do
|
643
|
-
skip "undefined method `valid?' for #<String"
|
644
615
|
expect(@return.query).to be_valid
|
645
616
|
end
|
646
617
|
end
|
@@ -663,7 +634,6 @@ shared_examples 'Finder Interface' do
|
|
663
634
|
end
|
664
635
|
|
665
636
|
it 'should have a valid query', :dm do
|
666
|
-
skip "undefined method `valid?' for #<String"
|
667
637
|
expect(@return.query).to be_valid
|
668
638
|
end
|
669
639
|
end
|
@@ -682,14 +652,12 @@ shared_examples 'Finder Interface' do
|
|
682
652
|
end
|
683
653
|
|
684
654
|
it 'should not have a valid query' do
|
685
|
-
skip "valid can't be checked on query anymore.."
|
686
655
|
expect(@return.query).not_to be_valid
|
687
656
|
end
|
688
657
|
end
|
689
658
|
|
690
659
|
describe 'with a nil value' do
|
691
660
|
before do
|
692
|
-
skip "nil on has_many not supported (explicitly)"
|
693
661
|
@return = @articles.all(:revisions => nil)
|
694
662
|
end
|
695
663
|
|
@@ -709,7 +677,6 @@ shared_examples 'Finder Interface' do
|
|
709
677
|
end
|
710
678
|
|
711
679
|
it 'should have a valid query', :dm do
|
712
|
-
skip "undefined method `valid?' for #<String"
|
713
680
|
expect(@return.query).to be_valid
|
714
681
|
end
|
715
682
|
|
@@ -720,7 +687,6 @@ shared_examples 'Finder Interface' do
|
|
720
687
|
|
721
688
|
describe 'with a negated nil value' do
|
722
689
|
before do
|
723
|
-
skip "nil on has_many not supported (explicitly)"
|
724
690
|
@return = @articles.all(:revisions.not => nil)
|
725
691
|
end
|
726
692
|
|
@@ -733,7 +699,6 @@ shared_examples 'Finder Interface' do
|
|
733
699
|
end
|
734
700
|
|
735
701
|
it 'should have a valid query', :dm do
|
736
|
-
skip "undefined method `valid?' for #<String"
|
737
702
|
expect(@return.query).to be_valid
|
738
703
|
end
|
739
704
|
|
@@ -745,7 +710,6 @@ shared_examples 'Finder Interface' do
|
|
745
710
|
|
746
711
|
describe 'with a query using a m:m relationship' do
|
747
712
|
before do
|
748
|
-
skip "has_many through not supported (explicitly)"
|
749
713
|
@publication = @article.publications.create(:name => 'Ardm Now')
|
750
714
|
end
|
751
715
|
|
@@ -765,7 +729,6 @@ shared_examples 'Finder Interface' do
|
|
765
729
|
end
|
766
730
|
|
767
731
|
it 'should have a valid query', :dm do
|
768
|
-
skip "undefined method `valid?' for #<String"
|
769
732
|
expect(@return.query).to be_valid
|
770
733
|
end
|
771
734
|
end
|
@@ -786,7 +749,6 @@ shared_examples 'Finder Interface' do
|
|
786
749
|
end
|
787
750
|
|
788
751
|
it 'should have a valid query', :dm do
|
789
|
-
skip "undefined method `valid?' for #<String"
|
790
752
|
expect(@return.query).to be_valid
|
791
753
|
end
|
792
754
|
end
|
@@ -811,7 +773,6 @@ shared_examples 'Finder Interface' do
|
|
811
773
|
end
|
812
774
|
|
813
775
|
it 'should have a valid query', :dm do
|
814
|
-
skip "undefined method `valid?' for #<String"
|
815
776
|
expect(@return.query).to be_valid
|
816
777
|
end
|
817
778
|
end
|
@@ -850,7 +811,6 @@ shared_examples 'Finder Interface' do
|
|
850
811
|
end
|
851
812
|
|
852
813
|
it 'should have a valid query', :dm do
|
853
|
-
skip "undefined method `valid?' for #<String"
|
854
814
|
expect(@return.query).to be_valid
|
855
815
|
end
|
856
816
|
|
@@ -875,7 +835,6 @@ shared_examples 'Finder Interface' do
|
|
875
835
|
end
|
876
836
|
|
877
837
|
it 'should have a valid query', :dm do
|
878
|
-
skip "undefined method `valid?' for #<String"
|
879
838
|
expect(@return.query).to be_valid
|
880
839
|
end
|
881
840
|
|
@@ -936,7 +895,7 @@ shared_examples 'Finder Interface' do
|
|
936
895
|
@copy.to_a
|
937
896
|
end
|
938
897
|
|
939
|
-
it { is_expected.to equal(@articles
|
898
|
+
it { is_expected.to equal(@articles) }
|
940
899
|
|
941
900
|
it { expect(method(:subject)).to change { yields.dup }.from([]).to(@copy.to_a) }
|
942
901
|
end
|
@@ -944,9 +903,6 @@ shared_examples 'Finder Interface' do
|
|
944
903
|
it { expect(@articles).to respond_to(:fetch) }
|
945
904
|
|
946
905
|
describe '#fetch' do
|
947
|
-
before do
|
948
|
-
skip "Who uses fetch anyway..."
|
949
|
-
end
|
950
906
|
subject { @articles.fetch(*args, &block) }
|
951
907
|
|
952
908
|
let(:block) { nil }
|
@@ -998,7 +954,6 @@ shared_examples 'Finder Interface' do
|
|
998
954
|
|
999
955
|
describe 'with a belongs_to relationship method' do
|
1000
956
|
before do
|
1001
|
-
skip "rspec doens't know what rescue_if means.."
|
1002
957
|
rescue_if 'Model#method_missing should delegate to relationships', @articles.kind_of?(Class) do
|
1003
958
|
@articles.create(:body => 'Another Article', :original => @original)
|
1004
959
|
|
@@ -1033,7 +988,6 @@ shared_examples 'Finder Interface' do
|
|
1033
988
|
|
1034
989
|
describe 'with no arguments' do
|
1035
990
|
before do
|
1036
|
-
skip "query chains not supported"
|
1037
991
|
@return = @articles.previous
|
1038
992
|
end
|
1039
993
|
|
@@ -1053,7 +1007,6 @@ shared_examples 'Finder Interface' do
|
|
1053
1007
|
|
1054
1008
|
describe 'with arguments' do
|
1055
1009
|
before do
|
1056
|
-
skip "query chain not supported"
|
1057
1010
|
@return = @articles.previous(:fields => [ :id ])
|
1058
1011
|
end
|
1059
1012
|
|
@@ -1093,7 +1046,6 @@ shared_examples 'Finder Interface' do
|
|
1093
1046
|
|
1094
1047
|
describe 'with no arguments' do
|
1095
1048
|
before do
|
1096
|
-
skip "query chain not supported"
|
1097
1049
|
@return = @collection = @articles.revisions
|
1098
1050
|
end
|
1099
1051
|
|
@@ -1112,7 +1064,6 @@ shared_examples 'Finder Interface' do
|
|
1112
1064
|
|
1113
1065
|
describe 'with arguments' do
|
1114
1066
|
before do
|
1115
|
-
skip "query chain not supported"
|
1116
1067
|
@return = @collection = @articles.revisions(:fields => [ :id ])
|
1117
1068
|
end
|
1118
1069
|
|
@@ -1168,7 +1119,6 @@ shared_examples 'Finder Interface' do
|
|
1168
1119
|
|
1169
1120
|
describe 'with arguments' do
|
1170
1121
|
before do
|
1171
|
-
skip "query chain not supported"
|
1172
1122
|
@return = @collection = @articles.publications(:fields => [ :id ])
|
1173
1123
|
end
|
1174
1124
|
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ardm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Martin Emde
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -377,9 +377,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
377
377
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
378
378
|
none: false
|
379
379
|
requirements:
|
380
|
-
- - ! '
|
380
|
+
- - ! '>='
|
381
381
|
- !ruby/object:Gem::Version
|
382
|
-
version:
|
382
|
+
version: '0'
|
383
383
|
requirements: []
|
384
384
|
rubyforge_project:
|
385
385
|
rubygems_version: 1.8.23.2
|
@@ -387,4 +387,3 @@ signing_key:
|
|
387
387
|
specification_version: 3
|
388
388
|
summary: ActiveRecord plugin to provide a smooth migration from DataMapper to ActiveRecord
|
389
389
|
test_files: []
|
390
|
-
has_rdoc:
|