Module: ActiveMock::Queries
Defined Under Namespace
Classes: Find, WhereNotChain
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(klass) ⇒ Object
5
6
7
|
# File 'lib/active_mock/queries.rb', line 5
def self.included(klass)
@included = klass
end
|
.included_klass ⇒ Object
9
10
11
12
|
# File 'lib/active_mock/queries.rb', line 9
def self.included_klass
return Relation if @included.name == 'ActiveMocker::Base'
@included
end
|
Instance Method Details
#all ⇒ Object
50
51
52
|
# File 'lib/active_mock/queries.rb', line 50
def all
Queries.included_klass.new( to_a || [] )
end
|
#average(key) ⇒ Object
93
94
95
96
97
|
# File 'lib/active_mock/queries.rb', line 93
def average(key)
values = values_by_key(key)
total = values.inject { |sum, n| sum + n }
BigDecimal.new(total) / BigDecimal.new(values.count)
end
|
#delete_all ⇒ Object
42
43
44
|
# File 'lib/active_mock/queries.rb', line 42
def delete_all
all.map(&:delete)
end
|
#destroy_all ⇒ Object
46
47
48
|
# File 'lib/active_mock/queries.rb', line 46
def destroy_all
delete_all
end
|
#find(ids) ⇒ Object
61
62
63
64
65
66
67
68
|
# File 'lib/active_mock/queries.rb', line 61
def find(ids)
ids_array = [*ids]
results = ids_array.map do |id|
where(id: id).first
end
return Queries.included_klass.new(results) if ids.class == Array
results.first
end
|
#find_by(options = {}) ⇒ Object
74
75
76
|
# File 'lib/active_mock/queries.rb', line 74
def find_by(options = {})
send(:where, options).first
end
|
#find_by!(options = {}) ⇒ Object
78
79
80
81
82
|
# File 'lib/active_mock/queries.rb', line 78
def find_by!(options={})
result = find_by(options)
raise RecordNotFound if result.blank?
result
end
|
#limit(num) ⇒ Object
84
85
86
|
# File 'lib/active_mock/queries.rb', line 84
def limit(num)
Queries.included_klass.new(all.take(num))
end
|
#maximum(key) ⇒ Object
103
104
105
|
# File 'lib/active_mock/queries.rb', line 103
def maximum(key)
values_by_key(key).max_by { |i| i }
end
|
#minimum(key) ⇒ Object
99
100
101
|
# File 'lib/active_mock/queries.rb', line 99
def minimum(key)
values_by_key(key).min_by{|i| i }
end
|
#order(key) ⇒ Object
107
108
109
|
# File 'lib/active_mock/queries.rb', line 107
def order(key)
Queries.included_klass.new(all.sort_by { |item| item.send(key) })
end
|
#reverse_order ⇒ Object
111
112
113
|
# File 'lib/active_mock/queries.rb', line 111
def reverse_order
Queries.included_klass.new(to_a.reverse)
end
|
#sum(key) ⇒ Object
88
89
90
91
|
# File 'lib/active_mock/queries.rb', line 88
def sum(key)
values = values_by_key(key)
values.inject { |sum, n| sum + n }
end
|
#update_all(options) ⇒ Object
70
71
72
|
# File 'lib/active_mock/queries.rb', line 70
def update_all(options)
all.each{ |i| i.update(options)}
end
|
#where(options = nil) ⇒ Object
54
55
56
57
58
59
|
# File 'lib/active_mock/queries.rb', line 54
def where(options=nil)
return WhereNotChain.new(all) if options.nil?
Queries.included_klass.new(all.select do |record|
Find.new(record).is_of(options)
end)
end
|