3scale/porta

View on GitHub
script/detect-invalid-data.rb

Summary

Maintainability
A
3 hrs
Test Coverage
#! rails runner
# -*- mode: Ruby;-*-
#
 
class InvalidDataDetector
 
def initialize
@invalid = {}
end
 
Method `search` has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
InvalidDataDetector#search has approx 12 statements
def search
puts 'Searching for invalid data'
 
 
InvalidDataDetector#search has the variable name 'p'
Account.providers.find_each do |p|
InvalidDataDetector#search calls 'p.id' 3 times
@current = p.id
 
unless p.sections.find_by_system_name('root')
error 'root section missing'
end
 
InvalidDataDetector#search calls 'p.billing_strategy' 2 times
InvalidDataDetector#search calls 'p.settings' 2 times
InvalidDataDetector#search calls 'p.settings.finance' 2 times
if p.billing_strategy && p.settings.finance.denied?
error 'finance denied but billing strategy exists'
end
 
InvalidDataDetector#search performs a nil-check
if p.billing_strategy.nil? && p.settings.finance.allowed?
error 'missing billing strategy'
end
 
InvalidDataDetector#search contains iterators nested 2 deep
if p.provided_cinstances.find_each do |app|
if app.user_account.nil?
error "application #{app.id} has no buyer"
end
end
 
if (count = p.forum.posts_count) < 0
error "forum posts_count is #{count}"
end
end
 
 
 
InvalidDataDetector#search calls '@invalid[p.id]' 2 times
puts "Found errors in '#{p.name}': #{@invalid[p.id]}" if @invalid[p.id].present?
end
 
puts @invalid.inspect
 
@invalid.empty? ? 0 : -1
end
 
private
 
def error(msg)
errors = @invalid[@current] ||= []
errors << msg
end
end
 
exit InvalidDataDetector.new.search