Sha256: 064f48f5448de4e46326ea738ef38b446c34af50bda844fe7237126512594b9e
Contents?: true
Size: 1.41 KB
Versions: 23
Compression:
Stored size: 1.41 KB
Contents
require "active_support/concern" require "active_support/inflector" module ActiveSupport module Testing # Resolves a constant from a minitest spec name. # # Given the following spec-style test: # # describe WidgetsController, :index do # describe "authenticated user" do # describe "returns widgets" do # it "has a controller that exists" do # assert_kind_of WidgetsController, @controller # end # end # end # end # # The test will have the following name: # # "WidgetsController::index::authenticated user::returns widgets" # # The constant WidgetsController can be resolved from the name. # The following code will resolve the constant: # # controller = determine_constant_from_test_name(name) do |constant| # Class === constant && constant < ::ActionController::Metal # end module ConstantLookup extend ::ActiveSupport::Concern module ClassMethods # :nodoc: def determine_constant_from_test_name(test_name) names = test_name.split "::" while names.size > 0 do names.last.sub!(/Test$/, "") begin constant = names.join("::").safe_constantize break(constant) if yield(constant) ensure names.pop end end end end end end end
Version data entries
23 entries across 23 versions & 3 rubygems