55 lines
1022 B
Ruby
55 lines
1022 B
Ruby
require 'rubygems'
|
|
require 'bundler'
|
|
Bundler.require(:default, :test)
|
|
require 'active_support/all'
|
|
require 'matchers'
|
|
require 'cancan/matchers'
|
|
|
|
RSpec.configure do |config|
|
|
config.mock_with :rr
|
|
end
|
|
|
|
class Ability
|
|
include CanCan::Ability
|
|
|
|
def initialize(user)
|
|
end
|
|
end
|
|
|
|
# Generic class to mimic a model
|
|
class Project
|
|
attr_accessor :name
|
|
|
|
def initialize(attributes = {})
|
|
@name = attributes[:name]
|
|
end
|
|
|
|
def attributes=(attributes)
|
|
@name = attributes[:name] if attributes[:name]
|
|
end
|
|
|
|
class << self
|
|
protected
|
|
|
|
def sanitize_sql(hash_cond)
|
|
case hash_cond
|
|
when Hash
|
|
sanitize_hash(hash_cond).join(' AND ')
|
|
when Array
|
|
hash_cond.shift.gsub('?'){"#{hash_cond.shift.inspect}"}
|
|
when String then hash_cond
|
|
end
|
|
end
|
|
|
|
def sanitize_hash(hash)
|
|
hash.map do |name, value|
|
|
if Hash === value
|
|
sanitize_hash(value).map{|cond| "#{name}.#{cond}"}
|
|
else
|
|
"#{name}=#{value}"
|
|
end
|
|
end.flatten
|
|
end
|
|
end
|
|
end
|