Commit 82a434f

mo <mo@mokhan.ca>
2019-05-29 02:17:02
naive greater than
1 parent 35227bf
Changed files (3)
app
spec
app/models/scim/user.rb
@@ -4,6 +4,7 @@ module SCIM
   class User
     ATTRIBUTES = {
       userName: :email,
+      'meta.lastModified' => :updated_at
     }.with_indifferent_access
     include ActiveModel::Model
     attr_accessor :id, :schemas, :userName, :name, :locale, :timezone, :password
app/models/scim/visitor.rb
@@ -15,6 +15,10 @@ module Scim
         User.where("#{attr} like ?", "#{tree[:value].to_s[1..-2]}%")
       when 'ew'
         User.where("#{attr} like ?", "%#{tree[:value].to_s[1..-2]}")
+      when 'gt'
+        value = tree[:value].to_s[1..-2]
+        value = DateTime.parse(value)
+        User.where("#{attr} > ?", value)
       else
         User.none
       end
spec/models/user_spec.rb
@@ -41,7 +41,15 @@ RSpec.describe User do
     end
 
     specify do
-      results = User.scim_filter_for(tree_for("userName ew \"#{random_user.email[-3..-1]}\""))
+      results = User.scim_filter_for(tree_for("userName ew \"#{random_user.email[-5..-1]}\""))
+      expect(results).to match_array([random_user])
+    end
+
+    specify do
+      freeze_time
+      random_user.update!(updated_at: 10.minutes.from_now)
+
+      results = User.scim_filter_for(tree_for("meta.lastModified gt \"#{Time.now.iso8601}\""))
       expect(results).to match_array([random_user])
     end