$LOAD_PATH.unshift(File.dirname(__FILE__)) $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib")) MODELS = File.join(File.dirname(__FILE__), "app/models") $LOAD_PATH.unshift(MODELS) if ENV["CI"] require "coveralls" Coveralls.wear! do add_filter "spec" end end require "action_controller" require "mongoid" require "rspec" require "helpers" # These environment variables can be set if wanting to test against a database # that is not on the local machine. ENV["MONGOID_SPEC_HOST"] ||= "localhost" ENV["MONGOID_SPEC_PORT"] ||= "27017" # These are used when creating any connection in the test suite. HOST = ENV["MONGOID_SPEC_HOST"] PORT = ENV["MONGOID_SPEC_PORT"].to_i # Moped.logger.level = Logger::DEBUG # Mongoid.logger.level = Logger::DEBUG # When testing locally we use the database named mongoid_test. However when # tests are running in parallel on Travis we need to use different database # names for each process running since we do not have transactions and want a # clean slate before each spec run. def database_id "mongoid_test" end def database_id_alt "mongoid_test_alt" end CONFIG = { sessions: { default: { database: database_id, hosts: [ "#{HOST}:#{PORT}" ] } } } # Can we connect to MongoHQ from this box? def mongohq_connectable? ENV["MONGOHQ_REPL_PASS"].present? end def purge_database_alt! session = Mongoid::Sessions.default session.use(database_id_alt) session.collections.each do |collection| collection.drop end end def mongodb_version session = Mongoid::Sessions.default session.command(buildinfo: 1)["version"] end # Set the database that the spec suite connects to. Mongoid.configure do |config| config.load_configuration(CONFIG) end # Autoload every model for the test suite that sits in spec/app/models. Dir[ File.join(MODELS, "*.rb") ].sort.each do |file| name = File.basename(file, ".rb") autoload name.camelize.to_sym, name end module Rails class Application end end module MyApp class Application < Rails::Application end end ActiveSupport::Inflector.inflections do |inflect| inflect.irregular("canvas", "canvases") inflect.singular("address_components", "address_component") end RSpec.configure do |config| config.include Mongoid::SpecHelpers config.raise_errors_for_deprecations! # Drop all collections and clear the identity map before each spec. config.before(:each) do Mongoid.purge! end # Filter out MongoHQ specs if we can't connect to it. config.filter_run_excluding(config: ->(value){ return true if value == :mongohq && !mongohq_connectable? }) end