Commit 632ea7f

mo <mo@mokhan.ca>
2019-05-29 15:29:12
start to add support to AND
1 parent 37a4cf2
Changed files (3)
app/models/scim/visitor.rb
@@ -1,8 +1,12 @@
 module Scim
   class Visitor
     def self.result_for(tree)
+      puts tree.inspect
+
       attr = SCIM::User::ATTRIBUTES[tree[:attribute].to_s] || tree[:attribute].to_s
       case tree[:operator].to_s
+      when 'and'
+        result_for(tree[:left]).where(result_for(tree[:right]))
       when 'or'
         result_for(tree[:left]).or(result_for(tree[:right]))
       when 'eq'
spec/models/user_spec.rb
@@ -85,5 +85,13 @@ RSpec.describe User do
       )
       expect(results.pluck(:email)).to match_array([first_user.email, second_user.email])
     end
+
+    specify do
+      first_user = users.sample
+      second_user = users.sample
+      results = User.scim_filter_for(tree_for(%(meta.lastModified gt "#{first_user.updated_at.iso8601}" and meta.lastModified eq "#{second_user.updated_at.iso8601}")))
+      puts results.to_sql
+      expect(results).to match_array([first_user, second_user])
+    end
   end
 end
Gemfile.lock
@@ -1,6 +1,6 @@
 GIT
   remote: https://github.com/mokhan/scim-kit.git
-  revision: 39de2646da995c28ee61fdfb96b49e1251c3e46d
+  revision: 38f5077e882180aebeaeb3553bf196107561bc69
   specs:
     scim-kit (0.3.2)
       activemodel (>= 5.2.0)