crudspec 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- crudspec (0.0.1)
4
+ crudspec (0.1.0)
5
5
  rails
6
6
  rspec
7
7
 
data/README.markdown CHANGED
@@ -85,6 +85,28 @@ A controller that would work out of the box would look something like:
85
85
  end
86
86
  end
87
87
 
88
+ ## Options
89
+
90
+ ### Devise
91
+
92
+ If you're using [devise](https://github.com/plataformatec/devise) to authenticate your users, you can easily add
93
+ that to the spec by using the *devise* option.
94
+
95
+ For example, if your Devise model is User, you can call the generator
96
+ like this:
97
+
98
+ rails generate crudspec:spec products_controller --devise=user
99
+
100
+ And this will add the following lines to the spec:
101
+
102
+ include Devise::TestHelpers
103
+
104
+ before(:each) do
105
+ @user = users(:one) # Replace with whatever mock Factory
106
+ sign_in @user
107
+ end
108
+
109
+
88
110
  # TODO
89
111
 
90
112
  * Option to create a test for Ruby::Test
@@ -1,3 +1,3 @@
1
1
  module Crudspec
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -3,11 +3,14 @@ module Crudspec
3
3
  class SpecGenerator < Rails::Generators::Base
4
4
  argument :controller_name, :type => :string, :banner => 'controller_name'
5
5
  source_root File.expand_path("../templates", __FILE__)
6
+ desc "Create a RSpec spec for a CRUD controller"
7
+ class_option :devise, :desc => "Include steps to authenticate via devise", :type => :string, :banner => "devise_model"
6
8
 
7
9
  def generate_spec_file
8
10
  underscored = controller_name.underscore
9
11
  underscored = underscored + '_controller' unless underscored.match(/_controller$/)
10
12
  @class_name = underscored.classify
13
+ @devise = options[:devise] if options[:devise]
11
14
 
12
15
  # Really?
13
16
  @model_name = @class_name.demodulize.match(/(.+)Controller$/)[1].underscore.singularize
@@ -2,7 +2,14 @@ require 'spec_helper'
2
2
 
3
3
  describe <%= @class_name %> do
4
4
  fixtures :<%= @model_name.pluralize %>
5
+ <% if @devise %>
6
+ include Devise::TestHelpers
5
7
 
8
+ before(:each) do
9
+ @<%= @devise %> = <%= @devise.pluralize %>(:one) # Replace with whatever mock Factory you're using
10
+ sign_in @<%= @devise %>
11
+ end
12
+ <% end %>
6
13
  describe "GET 'index'" do
7
14
  it "is successful" do
8
15
  get :index
@@ -3,19 +3,27 @@ require 'generators/spec_generator'
3
3
 
4
4
  class SpecGeneratorTest < Rails::Generators::TestCase
5
5
  tests ::Crudspec::Generators::SpecGenerator
6
- destination File.expand_path("../tmp", File.dirname(__FILE__))
6
+ destination File.expand_path("../../tmp", File.dirname(__FILE__))
7
7
  setup :prepare_destination
8
+ teardown :prepare_destination
8
9
 
9
10
  test "create the controller files" do
10
- run_generator 'admin/coupons_controller'
11
- run_generator 'admin/discounts'
12
- run_generator 'Admin::Products'
13
- run_generator 'Admin::ClientsController'
11
+ run_generator %w(admin/coupons_controller)
12
+ run_generator %w(admin/discounts)
13
+ run_generator %w(Admin::Products)
14
+ run_generator %w(Admin::ClientsController)
14
15
 
15
16
  assert_file 'spec/controllers/admin/coupons_controller_spec.rb'
16
17
  assert_file 'spec/controllers/admin/discounts_controller_spec.rb'
17
18
  assert_file 'spec/controllers/admin/products_controller_spec.rb'
18
19
  assert_file 'spec/controllers/admin/clients_controller_spec.rb'
19
20
  end
21
+
22
+ test "devise option" do
23
+ run_generator %w(admin/secrets_controller --devise=user)
24
+
25
+ assert_file 'spec/controllers/admin/secrets_controller_spec.rb', /sign_in @user/
26
+ assert_file 'spec/controllers/admin/secrets_controller_spec.rb', /include Devise::TestHelpers/
27
+ end
20
28
  end
21
29
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crudspec
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Padilla