Module: ActiveMock::Queries

Included in:
Association, Base, HasAndBelongsToMany, HasMany, Relation
Defined in:
lib/active_mock/queries.rb

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_klassObject



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

#allObject



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_allObject



42
43
44
# File 'lib/active_mock/queries.rb', line 42

def delete_all
  all.map(&:delete)
end

#destroy_allObject



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

Raises:



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_orderObject



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