Skip to content
This repository has been archived by the owner on Feb 22, 2024. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
Issue #70: Honor new rspec 3 helper structure
  • Loading branch information
bploetz committed Feb 12, 2015
1 parent 3eb24f5 commit 777f60d
Show file tree
Hide file tree
Showing 12 changed files with 212 additions and 51 deletions.
2 changes: 1 addition & 1 deletion Rakefile
@@ -1,4 +1,4 @@
GEMFILE_MAP = {"gemfiles/Rails-3.0" => "Rails 3.0", "gemfiles/Rails-3.1" => "Rails 3.1", "gemfiles/Rails-3.2" => "Rails 3.2", "gemfiles/RailsAPI-0.0" => "Rails API 0.0", "gemfiles/Rails-4.0" => "Rails 4.0"}
GEMFILE_MAP = {"gemfiles/Rails-3.0" => "Rails 3.0", "gemfiles/Rails-3.1" => "Rails 3.1", "gemfiles/Rails-3.2" => "Rails 3.2", "gemfiles/RailsAPI-0.0" => "Rails API 0.0", "gemfiles/Rails-4.0" => "Rails 4.0", "gemfiles/Rails-4.0-RSpec3" => "RSpec 3"}

# To run the tests locally:
# gem install bundler
Expand Down
13 changes: 13 additions & 0 deletions gemfiles/Rails-4.0-RSpec3
@@ -0,0 +1,13 @@
source "http://rubygems.org"

gem "rails", "4.0.0"

gemspec :path => "../"

group :development, :test do
gem 'rake'
gem 'rspec', '>= 3'
gem 'rspec-rails', '>= 3'
gem 'generator_spec', '0.9.0'
gem 'simplecov'
end
Expand Up @@ -14,7 +14,6 @@ class NewApiVersionGenerator < Rails::Generators::Base
class_option :path, :type => :hash, :group => :path
class_option :defaults, :type => :hash, :group => :defaults


def verify_options
raise "Must specify at least one versioning strategy option" if !['header', 'parameter', 'path'].any? {|strategy| options.has_key?(strategy)}
if options.has_key?("header")
Expand Down Expand Up @@ -69,10 +68,15 @@ def add_controller_base_tests
empty_directory "test/integration/#{module_name_for_path(module_name)}"
template 'base_controller_integration_test.rb', File.join("test", "integration", "#{module_name_for_path(module_name)}", "base_controller_test.rb")
when :rspec
if File.exists? "spec/rails_helper.rb"
@rspec_require_file = "rails_helper"
else
@rspec_require_file = "spec_helper"
end
empty_directory "spec/controllers/#{module_name_for_path(module_name)}"
template 'base_controller_spec.rb', File.join("spec", "controllers", "#{module_name_for_path(module_name)}", "base_controller_spec.rb")
template 'base_controller_spec.rb', File.join("spec", "controllers", "#{module_name_for_path(module_name)}", "base_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
empty_directory "spec/requests/#{module_name_for_path(module_name)}"
template 'base_controller_spec.rb', File.join("spec", "requests", "#{module_name_for_path(module_name)}", "base_controller_spec.rb")
template 'base_controller_spec.rb', File.join("spec", "requests", "#{module_name_for_path(module_name)}", "base_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
else
say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}"
end
Expand All @@ -93,8 +97,13 @@ def add_presenter_test
empty_directory "test/presenters/#{module_name_for_path(module_name)}"
template 'base_presenter_test.rb', File.join("test", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_test.rb")
when :rspec
if File.exists? "spec/rails_helper.rb"
@rspec_require_file = "rails_helper"
else
@rspec_require_file = "spec_helper"
end
empty_directory "spec/presenters/#{module_name_for_path(module_name)}"
template 'base_presenter_spec.rb', File.join("spec", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_spec.rb")
template 'base_presenter_spec.rb', File.join("spec", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
else
say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}"
end
Expand Down
@@ -1,4 +1,4 @@
require 'spec_helper'
require '<%= @rspec_require_file %>'

describe <%= module_name %>::BaseController do

Expand Down
@@ -1,4 +1,4 @@
require 'spec_helper'
require '<%= @rspec_require_file %>'

describe <%= module_name %>::BasePresenter do

Expand Down
Expand Up @@ -34,8 +34,13 @@ def new_controller_tests
template 'new_controller_functional_test.rb', File.join("test", "functional", "#{module_name_for_path(module_name)}", "#{file_name}_controller_test.rb")
template 'new_controller_integration_test.rb', File.join("test", "integration", "#{module_name_for_path(module_name)}", "#{file_name}_controller_test.rb")
when :rspec
template 'new_controller_spec.rb', File.join("spec", "controllers", "#{module_name_for_path(module_name)}", "#{file_name}_controller_spec.rb")
template 'new_controller_spec.rb', File.join("spec", "requests", "#{module_name_for_path(module_name)}", "#{file_name}_controller_spec.rb")
if File.exists? "spec/rails_helper.rb"
@rspec_require_file = "rails_helper"
else
@rspec_require_file = "spec_helper"
end
template 'new_controller_spec.rb', File.join("spec", "controllers", "#{module_name_for_path(module_name)}", "#{file_name}_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
template 'new_controller_spec.rb', File.join("spec", "requests", "#{module_name_for_path(module_name)}", "#{file_name}_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
else
say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}"
end
Expand Down
@@ -1,4 +1,4 @@
require 'spec_helper'
require '<%= @rspec_require_file %>'

describe <%= module_name %>::<%= class_name%>Controller do

Expand Down
Expand Up @@ -20,7 +20,12 @@ def new_presenter_test
when :test_unit
template 'new_presenter_test.rb', File.join("test", "presenters", "#{module_name_for_path(module_name)}", "#{file_name}_presenter_test.rb")
when :rspec
template 'new_presenter_spec.rb', File.join("spec", "presenters", "#{module_name_for_path(module_name)}", "#{file_name}_presenter_spec.rb")
if File.exists? "spec/rails_helper.rb"
@rspec_require_file = "rails_helper"
else
@rspec_require_file = "spec_helper"
end
template 'new_presenter_spec.rb', File.join("spec", "presenters", "#{module_name_for_path(module_name)}", "#{file_name}_presenter_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file }
else
say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}"
end
Expand Down
@@ -1,4 +1,4 @@
require 'spec_helper'
require '<%= @rspec_require_file %>'

describe <%= module_name %>::<%= class_name%>Presenter do

Expand Down
93 changes: 73 additions & 20 deletions spec/generators/new_api_version_generator_spec.rb
Expand Up @@ -340,49 +340,102 @@ class #{mod}::BasePresenterTest < Test::Unit::TestCase
::FileUtils.rm(::File.expand_path("../../tmp/config/routes.rb", __FILE__))
::FileUtils.touch(::File.expand_path("../../tmp/config/routes.rb", __FILE__))
Versionist.configuration.configured_test_framework = :rspec
run_generator %W(#{ver} #{mod} --header=name:Accept value:application/vnd.mycompany.com-#{ver})
end

it "should create a namespaced spec/controllers directory" do
assert_directory "spec/controllers/#{module_name_for_path(mod)}"
context "directories" do
before :each do
run_generator %W(#{ver} #{mod} --header=name:Accept value:application/vnd.mycompany.com-#{ver})
end

it "should create a namespaced spec/controllers directory" do
assert_directory "spec/controllers/#{module_name_for_path(mod)}"
end

it "should create a namespaced spec/presenters directory" do
assert_directory "spec/presenters/#{module_name_for_path(mod)}"
end

it "should create a namespaced spec/helpers directory" do
assert_directory "spec/helpers/#{module_name_for_path(mod)}"
end
end

it "should create a namespaced base controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
context "rspec < 3" do
before :each do
run_generator %W(#{ver} #{mod} --header=name:Accept value:application/vnd.mycompany.com-#{ver})
end

it "should create a namespaced base request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::BaseController do
end
CONTENTS
end
CONTENTS
end

it "should create a namespaced base request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
it "should create a namespaced base controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::BaseController do
end
CONTENTS
end

it "should create a namespaced spec/presenters directory" do
assert_directory "spec/presenters/#{module_name_for_path(mod)}"
end
CONTENTS
end

it "should create a namespaced base presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/base_presenter_spec.rb", <<-CONTENTS
it "should create a namespaced base presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/base_presenter_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::BasePresenter do
end
CONTENTS
CONTENTS
end
end

it "should create a namespaced spec/helpers directory" do
assert_directory "spec/helpers/#{module_name_for_path(mod)}"
context "rspec >= 3" do
before :each do
::FileUtils.mkdir_p(::File.expand_path("../../tmp/spec", __FILE__))
::FileUtils.touch(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
run_generator %W(#{ver} #{mod} --header=name:Accept value:application/vnd.mycompany.com-#{ver})
end

after :each do
::FileUtils.rm(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
end

it "should create a namespaced base request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::BaseController do
end
CONTENTS
end

it "should create a namespaced base controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/base_controller_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::BaseController do
end
CONTENTS
end

it "should create a namespaced base presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/base_presenter_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::BasePresenter do
end
CONTENTS
end
end
end
end
Expand Down
69 changes: 56 additions & 13 deletions spec/generators/new_controller_generator_spec.rb
Expand Up @@ -114,35 +114,78 @@ class #{mod}::#{name.camelize}ControllerTest < ActionDispatch::IntegrationTest
::FileUtils.mkdir_p(::File.expand_path("../../tmp/app/controllers/#{module_name_for_path(mod)}", __FILE__))
::File.open(::File.expand_path("../../tmp/config/routes.rb", __FILE__), "w") {|f| f.write "Test::Application.routes.draw do\n api_version(:module => \"#{module_name_for_route(mod)}\", :header => \"Accept\", :value => \"application/vnd.mycompany.com-v1\") do\n end\nend"}
Versionist.configuration.configured_test_framework = :rspec
run_generator [name, mod]
end

it "should create a namespaced spec/controllers directory" do
assert_directory "spec/controllers/#{module_name_for_path(mod)}"
context "directories" do
before :each do
run_generator [name, mod]
end

it "should create a namespaced spec/controllers directory" do
assert_directory "spec/controllers/#{module_name_for_path(mod)}"
end

it "should create a namespaced spec/requests directory" do
assert_directory "spec/requests/#{module_name_for_path(mod)}"
end
end

it "should create a namespaced controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
context "rspec < 3" do
before :each do
run_generator [name, mod]
end

it "should create a namespaced controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::#{name.camelize}Controller do
end
CONTENTS
end
CONTENTS
end

it "should create a namespaced request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::#{name.camelize}Controller do
it "should create a namespaced spec/requests directory" do
assert_directory "spec/requests/#{module_name_for_path(mod)}"
end
CONTENTS
end
end

it "should create a namespaced request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
require 'spec_helper'
context "rspec >= 3" do
before :each do
::FileUtils.mkdir_p(::File.expand_path("../../tmp/spec", __FILE__))
::FileUtils.touch(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
run_generator [name, mod]
end

after :each do
::FileUtils.rm(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
end

it "should create a namespaced controller spec" do
assert_file "spec/controllers/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::#{name.camelize}Controller do
end
CONTENTS
CONTENTS
end

it "should create a namespaced request spec" do
assert_file "spec/requests/#{module_name_for_path(mod)}/#{name.underscore}_controller_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::#{name.camelize}Controller do
end
CONTENTS
end
end
end
end
Expand Down
45 changes: 39 additions & 6 deletions spec/generators/new_presenter_generator_spec.rb
Expand Up @@ -86,21 +86,54 @@ class #{mod}::#{name.camelize}PresenterTest < Test::Unit::TestCase
::FileUtils.mkdir_p(::File.expand_path("../../tmp/app/presenters/#{module_name_for_path(mod)}", __FILE__))
::File.open(::File.expand_path("../../tmp/config/routes.rb", __FILE__), "w") {|f| f.write "Test::Application.routes.draw do\n api_version(:module => \"#{module_name_for_route(mod)}\", :header => \"Accept\", :value => \"application/vnd.mycompany.com-v1\") do\n end\nend"}
Versionist.configuration.configured_test_framework = :rspec
run_generator [name, mod]
end

it "should create a namespaced spec/presenters directory" do
assert_directory "spec/presenters/#{module_name_for_path(mod)}"
context "directories" do
before :each do
run_generator [name, mod]
end

it "should create a namespaced spec/presenters directory" do
assert_directory "spec/presenters/#{module_name_for_path(mod)}"
end
end

it "should create a namespaced presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/#{name.underscore}_presenter_spec.rb", <<-CONTENTS
context "rspec < 3" do
before :each do
run_generator [name, mod]
end

it "should create a namespaced presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/#{name.underscore}_presenter_spec.rb", <<-CONTENTS
require 'spec_helper'
describe #{mod}::#{name.camelize}Presenter do
end
CONTENTS
CONTENTS
end
end

context "rspec >= 3" do
before :each do
::FileUtils.mkdir_p(::File.expand_path("../../tmp/spec", __FILE__))
::FileUtils.touch(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
run_generator [name, mod]
end

after :each do
::FileUtils.rm(::File.expand_path("../../tmp/spec/rails_helper.rb", __FILE__))
end

it "should create a namespaced presenter spec" do
assert_file "spec/presenters/#{module_name_for_path(mod)}/#{name.underscore}_presenter_spec.rb", <<-CONTENTS
require 'rails_helper'
describe #{mod}::#{name.camelize}Presenter do
end
CONTENTS
end
end
end
end
Expand Down

1 comment on commit 777f60d

@Rio517
Copy link

@Rio517 Rio517 commented on 777f60d Feb 15, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My one comment would be that you're duplicating this behavior several times. Is it easy to add a helper method?

if File.exists? "spec/rails_helper.rb"
  @rspec_require_file = "rails_helper"
else
  @rspec_require_file = "spec_helper"
end

Please sign in to comment.