From e410388bd63dc19bbc7e7ef85eeaa64eb42bf538 Mon Sep 17 00:00:00 2001 From: nathanvda Date: Sun, 24 Jul 2011 00:54:15 +0200 Subject: [PATCH] Added tests for the install generator. --- Gemfile | 2 + Gemfile.lock | 4 ++ .../cocoon/install/install_generator.rb | 14 ++---- spec/generators/install_generator_spec.rb | 47 +++++++++++++++++++ 4 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 spec/generators/install_generator_spec.rb diff --git a/Gemfile b/Gemfile index 19de34e..e857791 100644 --- a/Gemfile +++ b/Gemfile @@ -10,6 +10,8 @@ group :development, :test do gem "rspec", ">= 2.6.0" gem "actionpack", ">=3.0.0" gem "simplecov", :require => false + + gem "generator_spec" end # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+) diff --git a/Gemfile.lock b/Gemfile.lock index deeef07..e958941 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -33,6 +33,9 @@ GEM diff-lcs (1.1.2) erubis (2.6.6) abstract (>= 1.0.0) + generator_spec (0.8.3) + rails (~> 3.0) + rspec-rails git (1.2.5) i18n (0.5.0) jeweler (1.6.2) @@ -95,6 +98,7 @@ PLATFORMS DEPENDENCIES actionpack (>= 3.0.0) + generator_spec jeweler json_pure rails (>= 3.0.0) diff --git a/lib/generators/cocoon/install/install_generator.rb b/lib/generators/cocoon/install/install_generator.rb index e3235a5..cdec94a 100644 --- a/lib/generators/cocoon/install/install_generator.rb +++ b/lib/generators/cocoon/install/install_generator.rb @@ -3,16 +3,12 @@ module Cocoon class InstallGenerator < ::Rails::Generators::Base source_root File.expand_path('../templates', __FILE__) - if ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR >= 1 - # for Rails 3.1 no installing is needed anymore, because of the asset pipeline - desc "Installing is only needed for rails 3.0.x" - def do_nothing + desc "This generator installs the javascript needed for cocoon" + def copy_the_javascript + if ::Rails.version[0..2].to_f >= 3.1 puts "Installing is no longer required since Rails 3.1" - end - else - desc "This generator installs the javascript needed for cocoon" - def copy_the_javascript - copy_file "../../../app/assets/javascripts/cocoon.js", "public/javascripts/cocoon.js" + else + copy_file "../../../../../app/assets/javascripts/cocoon.js", "public/javascripts/cocoon.js" end end diff --git a/spec/generators/install_generator_spec.rb b/spec/generators/install_generator_spec.rb new file mode 100644 index 0000000..3eb828b --- /dev/null +++ b/spec/generators/install_generator_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' +require 'generator_spec/test_case' +require 'generators/cocoon/install/install_generator' + +describe Cocoon::Generators::InstallGenerator do + include GeneratorSpec::TestCase + + destination File.expand_path("../../tmp", __FILE__) + + context "in rails 3.0" do + context "with no arguments" do + before(:all) do + ::Rails.stub(:version) { '3.0.8' } + prepare_destination + run_generator + end + + it "stubs the version correctly" do + Rails.version[0..2].should == "3.0" + end + + it "stubs the version correctly" do + test_version = (Rails.version[0..2].to_f >= 3.1) + test_version.should be_false + end + + it "copies cocoon.js to the correct folder" do + assert_file "public/javascripts/cocoon.js" + end + end + end + + context "in rails 3.1" do + context "with no arguments" do + before(:all) do + ::Rails.stub(:version) { '3.1.0' } + prepare_destination + run_generator + end + + it "does not copy cocoon.js" do + assert_no_file "public/javascripts/cocoon.js" + end + end + end + +end