Commit f22fd78
Changed files (4)
app/models/scim/search.rb
@@ -19,6 +19,10 @@ module Scim
@node[:value].to_s[1..-2]
end
+ def not?
+ @node.key?(:not)
+ end
+
def accept(visitor)
visitor.visit(self)
end
@@ -35,6 +39,10 @@ module Scim
new(::Scim::Kit::V2::Filter.new.parse(query))
end
+ def inspect
+ @node.inspect
+ end
+
private
def [](key)
app/models/scim/visitor.rb
@@ -42,7 +42,11 @@ module Scim
end
def visit_equals(node)
- @clazz.where(attr_for(node) => node.value)
+ if node.not?
+ @clazz.where.not(attr_for(node) => node.value)
+ else
+ @clazz.where(attr_for(node) => node.value)
+ end
end
def visit_not_equals(node)
spec/models/scim/search_spec.rb
@@ -15,7 +15,7 @@ RSpec.describe ::Scim::Search do
expect(results).to match_array(users)
end
- pending do
+ specify do
results = subject.for("userName pr and not (userName eq \"#{random_user.email}\")")
expect(results).to match_array(users - [random_user])
end
Gemfile.lock
@@ -1,6 +1,6 @@
GIT
remote: https://github.com/mokhan/scim-kit.git
- revision: 55ab23972bc21d8fe3823a8b081ac417949033db
+ revision: 1168b638d11b335127345f9754cec025b30dbeff
specs:
scim-kit (0.3.2)
activemodel (>= 5.2.0)