Sha256: e5b1918e946da71fde1fe6c076ab0d77aa62f43b85681730df35ecd78df7629b

Contents?: true

Size: 1.93 KB

Versions: 5

Compression:

Stored size: 1.93 KB

Contents

require 'test_helper'
require "rails"
require 'mongo_mapper/railtie'

class TestRailtie < Test::Unit::TestCase

  def expect_descendants(expectation)
    # Keep expectation a string so we don't accidentally load in a class
    Railtie::Parent.descendants.map(&:to_s).sort.should == expectation.sort
  end

  def run_initializer(mod, name)
    initializer = mod.initializers.detect do |i|
      i.name == name
    end
    initializer.block.arity == -1 ? initializer.run : initializer.run(FakeRails)
    # mongo_mapper.prepare_dispatcher takes a Rails app as its one arg,
    # set_clear_dependencies_hook takes no args
  end

  def load_autoloaded_class
    Railtie::Autoloaded.presence
  end

  class FakeRails
    def self.config
      return Class.new { def cache_classes ; false ; end }.new
    end
  end

  context "Railtie" do
    include Rails::Application::Bootstrap

    setup do
      require 'support/railtie'
      require 'support/railtie/parent'
      require 'support/railtie/not_autoloaded'

      ActiveSupport::Dependencies.autoload_paths << File.join(File.dirname(__FILE__), '..', 'support')

      # These initializers don't actually run anything, they just register cleanup and prepare hooks
      run_initializer Rails::Application::Bootstrap, :set_clear_dependencies_hook
      run_initializer MongoMapper::Railtie, 'mongo_mapper.prepare_dispatcher'
    end

    should "not clear ActiveSupport::DescendantsTracker" do
      expect_descendants %w( Railtie::NotAutoloaded )
      load_autoloaded_class
      expect_descendants %w( Railtie::NotAutoloaded Railtie::Autoloaded )

      ActionDispatch::Reloader.cleanup! # cleanup 'last request'

      expect_descendants %w( Railtie::NotAutoloaded )
      load_autoloaded_class
      expect_descendants %w( Railtie::NotAutoloaded Railtie::Autoloaded )

      ActionDispatch::Reloader.prepare! # prepare 'next request'
      expect_descendants %w( Railtie::NotAutoloaded Railtie::Autoloaded )
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
jamieorc-mongo_mapper-0.11.1.1 test/unit/test_railtie.rb
mongo_mapper-0.11.1 test/unit/test_railtie.rb
mongo_mapper-0.11.0 test/unit/test_railtie.rb
mongo_mapper-0.10.1 test/unit/test_railtie.rb
mongo_mapper-0.10.0 test/unit/test_railtie.rb