From 7117b2ee3397e5011b82f25bc9ee088ac0a7408f Mon Sep 17 00:00:00 2001 From: Mike Moore Date: Thu, 27 Sep 2012 13:17:09 -0600 Subject: [PATCH] Update minitest integration Since the integration is dependent on minitest-rails, use its test class. Did MiniTest::Spec::Decorator ever exist in this project? --- draper.gemspec | 1 + lib/draper.rb | 2 +- lib/draper/test/minitest_integration.rb | 10 ++-- spec/minitest-rails/spec_type_spec.rb | 63 +++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 spec/minitest-rails/spec_type_spec.rb diff --git a/draper.gemspec b/draper.gemspec index d4bc709..233fc1c 100644 --- a/draper.gemspec +++ b/draper.gemspec @@ -23,5 +23,6 @@ Gem::Specification.new do |s| s.add_development_dependency 'rake', '~> 0.9.2' s.add_development_dependency 'rspec', '~> 2.10' s.add_development_dependency 'yard' + s.add_development_dependency 'minitest-rails', '~> 0.2' s.add_development_dependency 'minitest', '~> 3.0' if RUBY_PLATFORM == "java" end diff --git a/lib/draper.rb b/lib/draper.rb index f4fa08e..c7cae8d 100644 --- a/lib/draper.rb +++ b/lib/draper.rb @@ -13,4 +13,4 @@ require 'draper/railtie' if defined?(Rails) # Test Support require 'draper/test/rspec_integration' if defined?(RSpec) and RSpec.respond_to?(:configure) -require 'draper/test/minitest_integration' if defined?(MiniTest::Spec) +require 'draper/test/minitest_integration' if defined?(MiniTest::Rails) diff --git a/lib/draper/test/minitest_integration.rb b/lib/draper/test/minitest_integration.rb index 6b0d0f4..3d48d7a 100755 --- a/lib/draper/test/minitest_integration.rb +++ b/lib/draper/test/minitest_integration.rb @@ -1,5 +1,7 @@ -require 'draper/test/view_context' - -MiniTest::Spec.register_spec_type(MiniTest::Spec::Decorator) do |desc| - desc.superclass == Draper::Base +class MiniTest::Rails::ActiveSupport::TestCase + # Use AS::TestCase for the base class when describing a decorator + register_spec_type(self) do |desc| + desc < Draper::Base if desc.is_a?(Class) + end + register_spec_type(/Decorator( ?Test)?\z/i, self) end diff --git a/spec/minitest-rails/spec_type_spec.rb b/spec/minitest-rails/spec_type_spec.rb new file mode 100644 index 0000000..5a20407 --- /dev/null +++ b/spec/minitest-rails/spec_type_spec.rb @@ -0,0 +1,63 @@ +require 'spec_helper' +require 'minitest/rails/active_support' +require 'draper/test/minitest_integration' + +describe "minitest-rails spec_type Lookup Integration" do + context "ProductDecorator" do + it "resolves constants" do + klass = MiniTest::Spec.spec_type(ProductDecorator) + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + + it "resolves strings" do + klass = MiniTest::Spec.spec_type("ProductDecorator") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + end + + context "WidgetDecorator" do + it "resolves constants" do + klass = MiniTest::Spec.spec_type(WidgetDecorator) + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + + it "resolves strings" do + klass = MiniTest::Spec.spec_type("WidgetDecorator") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + end + + context "decorator strings" do + it "resolves DoesNotExistDecorator" do + klass = MiniTest::Spec.spec_type("DoesNotExistDecorator") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + + it "resolves DoesNotExistDecoratorTest" do + klass = MiniTest::Spec.spec_type("DoesNotExistDecoratorTest") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + + it "resolves Does Not Exist Decorator" do + klass = MiniTest::Spec.spec_type("Does Not Exist Decorator") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + + it "resolves Does Not Exist Decorator Test" do + klass = MiniTest::Spec.spec_type("Does Not Exist Decorator Test") + klass.should == MiniTest::Rails::ActiveSupport::TestCase + end + end + + context "non-decorators" do + it "doesn't resolve constants" do + klass = MiniTest::Spec.spec_type(Draper::HelperSupport) + klass.should == MiniTest::Spec + end + + it "doesn't resolve strings" do + klass = MiniTest::Spec.spec_type("Nothing to see here...") + klass.should == MiniTest::Spec + end + end +end