Sha256: 2a7b3f58b03e922558b5063939ed9afdfb3d0b89d433da5d5701fd8a8522854b

Contents?: true

Size: 1020 Bytes

Versions: 4

Compression:

Stored size: 1020 Bytes

Contents

module Coulda
  SyntaxError = Class.new(StandardError)
end

require 'test/unit'

require 'coulda/world'
require 'coulda/feature'
require 'coulda/scenario'
require 'coulda/pending'
require 'coulda/vendor/constantize'
require 'coulda/vendor/underscore'

module Kernel
  # Factory method for Test::Unit::TestCase subclasses
  def Feature(name, opts = {}, &block)
    test_class = Class.new(opts[:testcase_class] || Test::Unit::TestCase)
    Coulda::assign_class_to_const test_class, name
    test_class.class_eval &block if block_given?
    test_class.assert_presence_of_intent
    World.register_feature(test_class, name)
    test_class
  end
end

module Coulda
  def assign_class_to_const(test_class, potential_const)
    base_name = potential_const
    if potential_const !~ /^[a-zA-Z]/
      base_name = "a_" + base_name
    end
    titleized_underscored_name = base_name.super_custom_underscore.gsub(/\b('?[a-z])/) { $1.upcase }
    Object.const_set(titleized_underscored_name, test_class)
  end
end

include ::Coulda

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
coulda-0.5.3 lib/coulda.rb
coulda-0.5.2 lib/coulda.rb
coulda-0.5.1 lib/coulda.rb
coulda-0.5.0 lib/coulda.rb