Commit 0497343

mo <mo.khan@gmail.com>
2019-05-31 00:02:59
fix linter errors
1 parent 447ea16
Changed files (3)
app
controllers
models
spec
app/controllers/scim/v2/users_controller.rb
@@ -10,11 +10,19 @@ module Scim
       end
 
       def index
-        if params[:filter].present?
-          @users = paginate(apply_filter_to(User.order(:created_at), params[:filter]), page: page - 1, page_size: page_size)
-        else
-          @users = paginate(User.order(:created_at), page: page - 1, page_size: page_size)
-        end
+        @users =
+          if params[:filter].present?
+            paginate(
+              apply_filter_to(User.order(:created_at), params[:filter]),
+              page: page - 1,
+              page_size: page_size
+            )
+          else
+            paginate(
+              User.order(:created_at),
+              page: page - 1, page_size: page_size
+            )
+          end
         render formats: :scim, status: :ok
       end
 
@@ -59,9 +67,9 @@ module Scim
         page_param(:count, default: 25, bottom: 0, top: 25)
       end
 
-      def apply_filter_to(scope, _raw_filter)
+      def apply_filter_to(scope, raw_filter)
         parser = Scim::Kit::V2::Filter.new
-        parse_tree = parser.parse(params[:filter])
+        parse_tree = parser.parse(raw_filter)
         scope.scim_filter_for(parse_tree)
       end
     end
app/models/scim/visitor.rb
@@ -3,7 +3,9 @@
 module Scim
   class Visitor
     def self.result_for(tree)
-      attr = SCIM::User::ATTRIBUTES[tree[:attribute].to_s] || tree[:attribute].to_s
+      attribute = tree[:attribute].to_s
+      attr = SCIM::User::ATTRIBUTES[attribute] || attribute
+
       case tree[:operator].to_s
       when 'and'
         result_for(tree[:left]).merge(result_for(tree[:right]))
spec/models/user_spec.rb
@@ -77,29 +77,26 @@ RSpec.describe User do
       expect(results).to match_array([random_user])
     end
 
-    specify do
-      first_user = users.sample
-      second_user = users.sample
-      results = described_class.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])
+    context "when searching for condition a OR condition b" do
+      let(:first_user) { users.sample }
+      let(:second_user) { users.sample }
+      let(:results) { described_class.scim_filter_for(tree_for(%(userName eq "#{first_user.email}" or userName eq "#{second_user.email}"))) }
+
+      specify { expect(results.pluck(:email)).to match_array([first_user.email, second_user.email]) }
     end
 
     context "when searching for condition a AND condition b" do
-      specify do
-        freeze_time
-        first_user = users.sample
-        second_user = users.sample
+      let(:first_user) { users.sample }
+      let(:second_user) { users.sample }
+      let(:results) { described_class.scim_filter_for(tree_for(%(meta.lastModified gt "#{10.minutes.from_now.iso8601}" and meta.lastModified lt "#{15.minutes.from_now.iso8601}"))) }
 
+      before do
+        freeze_time
         first_user.update!(updated_at: 11.minutes.from_now)
         second_user.update!(updated_at: 12.minutes.from_now)
-
-        results = described_class.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
+
+      specify { expect(results).to match_array([first_user, second_user]) }
     end
   end
 end