Commit 95dc040
Changed files (2)
app
models
scim
spec
models
app/models/scim/visitor.rb
@@ -1,12 +1,10 @@
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]))
+ result_for(tree[:left]).merge(result_for(tree[:right]))
when 'or'
result_for(tree[:left]).or(result_for(tree[:right]))
when 'eq'
spec/models/user_spec.rb
@@ -41,7 +41,7 @@ RSpec.describe User do
end
specify do
- results = User.scim_filter_for(tree_for("userName ew \"#{random_user.email[-5..-1]}\""))
+ results = User.scim_filter_for(tree_for("userName ew \"#{random_user.email[-8..-1]}\""))
expect(results).to match_array([random_user])
end
@@ -86,12 +86,20 @@ 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])
+ context "when searching for condition a AND condition b" do
+ specify do
+ freeze_time
+ first_user = users.sample
+ second_user = users.sample
+
+ first_user.update!(updated_at: 11.minutes.from_now)
+ second_user.update!(updated_at: 12.minutes.from_now)
+
+ results = User.scim_filter_for(
+ tree_for(%(meta.lastModified gt "#{10.minutes.from_now.iso8601}" and meta.lastModified lt "#{15.minutes.from_now.iso8601}"))
+ )
+ expect(results).to match_array([first_user, second_user])
+ end
end
end
end