From 60b86e1d645603b20e369f848552d00a24965a79 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 1 Mar 2024 11:40:39 +1100 Subject: [PATCH] Replace custom query counter with new gem rspec-sql --- .rubocop_todo.yml | 1 - .../admin/order_cycles_controller_spec.rb | 7 ++- spec/support/query_counter.rb | 48 ------------------- 3 files changed, 3 insertions(+), 53 deletions(-) delete mode 100644 spec/support/query_counter.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 80d792d884..250bf7c60f 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -889,7 +889,6 @@ Style/PreferredHashMethods: Style/RedundantArgument: Exclude: - 'engines/dfc_provider/app/services/authorization_control.rb' - - 'spec/support/query_counter.rb' # Offense count: 1 # This cop supports safe autocorrection (--autocorrect). diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index 085992f2d8..6cabb1f332 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -132,9 +132,9 @@ module Admin end it do - query_counter = QueryCounter.new - get :show, params: { id: order_cycle.id }, as: :json - expect(query_counter.queries).to eq( + expect { + get :show, params: { id: order_cycle.id }, as: :json + }.to query_database( { select: { enterprise_fees: 3, @@ -151,7 +151,6 @@ module Admin update: { spree_users: 1 } } ) - query_counter.stop end end end diff --git a/spec/support/query_counter.rb b/spec/support/query_counter.rb deleted file mode 100644 index 009c648d03..0000000000 --- a/spec/support/query_counter.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -class QueryCounter - QUERY_TYPES = [:delete, :insert, :select, :update].freeze - - attr_reader :queries - - def initialize - @queries = {} - @subscriber = ActiveSupport::Notifications. - subscribe("sql.active_record") do |_name, _started, _finished, _unique_id, payload| - type = get_type(payload[:sql]) - next if QUERY_TYPES.exclude?(type) || pg_query?(payload[:sql]) - - table = get_table(payload[:sql]) - @queries[type] ||= {} - @queries[type][table] ||= 0 - @queries[type][table] += 1 - end - end - - def stop - ActiveSupport::Notifications.unsubscribe("sql.active_record") - end - - private - - def get_table(sql) - sql_parts = sql.split(" ") - case get_type(sql) - when :insert - sql_parts[3] - when :update - sql_parts[1] - else - table_index = sql_parts.index("FROM") - sql_parts[table_index + 1] - end.gsub(/(\\|")/, "").to_sym - end - - def get_type(sql) - sql.split(" ")[0].downcase.to_sym - end - - def pg_query?(sql) - sql.include?("SELECT a.attname") || sql.include?("pg_attribute") - end -end