Commit 6618d14

mo <mo@mokhan.ca>
2019-05-29 01:34:03
handle contains operator
1 parent 91d1d15
Changed files (2)
app
models
spec
app/models/scim/visitor.rb
@@ -9,6 +9,8 @@ module Scim
         User.where(attr => tree[:value].to_s[1..-2])
       when 'ne'
         User.where.not(attr => tree[:value].to_s[1..-2])
+      when 'co'
+        User.where("#{attr} like ?", "#{tree[:value].to_s[1..-2]}%")
       else
         User.none
       end
spec/models/user_spec.rb
@@ -30,13 +30,17 @@ RSpec.describe User do
       expect(results.pluck(:email)).not_to include(random_user.email)
     end
 
+    specify do
+      results = User.scim_filter_for(tree_for("userName co \"#{random_user.email[0..3]}\""))
+      expect(results).to match_array([random_user])
+    end
+
     specify do
       first_user = users.sample
       second_user = users.sample
-      parse_tree = tree_for(%(userName eq "#{first_user.email}" or userName eq "#{second_user.email}"))
-      puts parse_tree
-      results = User.scim_filter_for(parse_tree)
-      puts results.to_sql
+      results = User.scim_filter_for(
+        tree_for(%(userName eq "#{first_user.email}" or userName eq "#{second_user.email}"))
+      )
       expect(results.pluck(:email)).to match_array([first_user.email, second_user.email])
     end
   end