elastic_queue 0.0.13 → 0.0.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9056882ae5a6d02c8f6b18be717a34d908d174ab
4
- data.tar.gz: 10683bfae76be54a3c63b6e39e340bbf994c0dc1
3
+ metadata.gz: d769bd3556106cd8ba5b46f4431c240c9224f09b
4
+ data.tar.gz: abafb1ff884a54e50f1d2fccaf89828f4d344790
5
5
  SHA512:
6
- metadata.gz: 711303e69e8421e4a065bb13eb2a1e6ad94cd7ae7fe5eec2c844bdb91d5cc72bf17dc222e6e47d679e8c1b810167c82c1effe3b15318a87cc4c8611a2c07d852
7
- data.tar.gz: 2ea0cd970a3af6d73241c994beb4dc90bd09c2ad62426272a389392d0e1b52d1e2d25fb5606bb26170c53892473a2ba65058838383748e1d644d5ff4d3e52adb
6
+ metadata.gz: 6354f5f3e4b483aa664ac99d61c8a1de523835f550869315d0d47aa8741a80209142eb694adfc64960de6c24c468467704294b4bb8a45c430f0597595ae7c68e
7
+ data.tar.gz: 336a51bb66c21ddef868b4dc0a1483827a13e245bb51846af5852243c328f284c12a442f8169759b1b069804fd62a5f31805dc506ad757c94f89d60caa1d2bfe
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- elastic_queue (0.0.13)
4
+ elastic_queue (0.0.14)
5
5
  activerecord (~> 3.0)
6
6
  activesupport (~> 3.0)
7
7
  elasticsearch (~> 0.4)
@@ -56,8 +56,8 @@ GEM
56
56
  diff-lcs (>= 1.1.3, < 2.0)
57
57
  rspec-mocks (2.14.6)
58
58
  sqlite3 (1.3.9)
59
- tzinfo (0.3.39)
60
- will_paginate (3.0.5)
59
+ tzinfo (0.3.40)
60
+ will_paginate (3.0.7)
61
61
 
62
62
  PLATFORMS
63
63
  ruby
@@ -13,7 +13,7 @@ module ElasticQueue
13
13
 
14
14
  def option_to_filter(key, value)
15
15
  # return and_options(value) if key == :and
16
- if [:or, :and].include?(key)
16
+ if [:or, :and, :not].include?(key)
17
17
  join_options(key, value)
18
18
  elsif value.is_a? Array
19
19
  or_filter(key, value)
@@ -30,7 +30,7 @@ module ElasticQueue
30
30
 
31
31
  def join_options(operator, options)
32
32
  conditions = options.map { |o| options_to_filters(o) }.flatten
33
- { operator => conditions }
33
+ operator == :not ? { not: { filter: { and: conditions } } } : { operator => conditions }
34
34
  end
35
35
 
36
36
  def or_filter(term, values)
@@ -1,3 +1,4 @@
1
1
  module ElasticQueue
2
- VERSION = '0.0.13'
3
- end
2
+ VERSION = '0.0.14'
3
+ end
4
+
@@ -41,6 +41,11 @@ describe 'ElasticQueue::Filters integration' do
41
41
  expect(TestAnimalsQueue.query.filter(name: 'a').all.map(&:name)).to eq ['a']
42
42
  end
43
43
 
44
+ it 'can filter out one value' do
45
+ @create_animals.call
46
+ expect(TestAnimalsQueue.query.filter(not: [ { name: 'a'} ]).all.map(&:name).sort).to eq ['b', 'c']
47
+ end
48
+
44
49
  it 'can filter by a less than or greater than a time' do
45
50
  @create_animals.call
46
51
  expect(TestAnimalsQueue.query.filter(birthdate: { after: Date.today - 1.year - 1.day }).all.map(&:name)).to eq ['a']
@@ -110,16 +115,41 @@ describe 'ElasticQueue::Filters integration' do
110
115
  # (rusty, killer, speedy) && ( rusty || lucky, killer, old bess, cock-a-doodle-doo)
111
116
  name: ['rusty', 'killer', 'speedy'], #(rusty, killer, speedy) && (
112
117
  or: [
113
- and: [ # rusty ||
114
- { species: ['dog', 'mountain lion'] },
115
- { dangerous: false }
116
- ],
117
- or: [ #speedy, killer, old bess, cock-a-doodle-doo )
118
- { species: ['horse', 'chicken'] },
119
- { dangerous: true }
118
+ and: [ # rusty ||
119
+ { species: ['dog', 'mountain lion'] },
120
+ { dangerous: false }
121
+ ],
122
+ or: [ #speedy, killer, old bess, cock-a-doodle-doo )
123
+ { species: ['horse', 'chicken'] },
124
+ { dangerous: true }
125
+ ]
120
126
  ]
121
- ]
122
127
  }).all.map(&:name).sort).to eq ['killer', 'rusty', 'speedy']
123
128
  end
129
+
130
+ it 'can nest multiple ands and ors and nots' do
131
+ Animal.create({ name: 'rusty', species: 'dog', dangerous: false })
132
+ Animal.create({ name: 'killer', species: 'mountain lion', dangerous: true })
133
+ Animal.create({ name: 'cock-a-doodle-doo', species: 'chicken', dangerous: false })
134
+ Animal.create({ name: 'old bess', species: 'cow', dangerous: true })
135
+ Animal.create({ name: 'speedy', species: 'horse', dangerous: false })
136
+ expect(TestAnimalsQueue.query.filter({
137
+ #(rusty, killer, speedy, cock-a-doodle-doo) && (! rusty && (rusty || speedy, killer, old bess, cock-a-doodle-doo))
138
+ name: ['rusty', 'killer', 'speedy', 'cock-a-doodle-doo'], #(rusty, killer, speedy, cock-a-doodle-doo) && (
139
+ not: [ # ! rusty &&
140
+ { name: 'rusty' }
141
+ ],
142
+ or: [
143
+ and: [ # (rusty ||
144
+ { species: ['dog', 'mountain lion'] },
145
+ { dangerous: false }
146
+ ],
147
+ or: [ #speedy, killer, old bess, cock-a-doodle-doo ))
148
+ { species: ['horse', 'chicken'] },
149
+ { not: [ { dangerous: false } ] },
150
+ ]
151
+ ]
152
+ }).all.map(&:name).sort).to eq ['cock-a-doodle-doo', 'killer', 'speedy']
153
+ end
124
154
  end
125
155
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruth Thompson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-02 00:00:00.000000000 Z
12
+ date: 2014-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport