bread 0.0.7 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 512440b0923520d6c7e88b2697f3ed09805f7417
4
- data.tar.gz: d5a96a75101e8bbd427711a8abc6b53466ab0ae7
3
+ metadata.gz: 219fdb18666c32fd524afd1f7f06818a09bfffcd
4
+ data.tar.gz: 6c99b288b1c8bf890f43a4129f95b9aa9de4b131
5
5
  SHA512:
6
- metadata.gz: 4b5882b890a6a09ef316e5df023b12669bbd98663c3e6c571748dddc0aa2f43a4bf44efdfc7ace8f14c206e87ef26714dfe851f7b6c5b83b741ba9804ef4bd54
7
- data.tar.gz: ddd232dec7b8ddd7d0398476dc02ad9ea87168cab6b5e90eac619f764ca1d45e467fb3802102d35fae68a40a2eac9c74411ae1cb2f256b4c9ed52e3f3805b3c9
6
+ metadata.gz: 26540026641574a3779a9f000d0c23b0e3ccb2d4af024bafe6c705b507231c3e3a72181b4181e942a4f236e487c1b861ead0a7dfb2d86d5a19b2cdfcc8e093e8
7
+ data.tar.gz: d4a0b2ae1a881490e97db24889fe4372991df33089e0f639e5d7d6b2aa2de4f98c772673768595b371939effd1515c2e180aa15b073b6118d99c02107422a285
data/Gemfile CHANGED
@@ -16,7 +16,9 @@ gemspec
16
16
  gem 'rails', '4.0.0' # June 25, 2013
17
17
  gem 'sqlite3'
18
18
  gem 'turn'
19
+ gem 'capybara'
19
20
  gem 'colorize'
20
21
 
21
22
  # dummy app
22
23
  gem 'devise'
24
+ gem 'before_actions'
data/lib/bread/helper.rb CHANGED
@@ -2,7 +2,7 @@ module Bread
2
2
  module Helper
3
3
 
4
4
  def bread
5
- crumbset = Bread.actions.get_crumbset(controller_name, action_name)
5
+ crumbset = Bread.actions.get_crumbset(controller_path, action_name)
6
6
  Bread.crumbs.crumbs_for(controller, crumbset)
7
7
  end
8
8
 
@@ -7,9 +7,9 @@ module Bread
7
7
  @top_scope.instance_eval(&block)
8
8
  end
9
9
 
10
- def get_crumbset(controller_name, action_name)
10
+ def get_crumbset(controller_path, action_name)
11
11
  reload
12
- @top_scope.get_controller_scope(controller_name).get_crumbset(action_name)
12
+ @top_scope.get_controller_scope(controller_path).get_crumbset(action_name)
13
13
  end
14
14
 
15
15
 
@@ -5,9 +5,9 @@ module Bread
5
5
 
6
6
  attr_reader :top_scope, :parent_crumbs
7
7
 
8
- def initialize(top_scope, controller_name, options)
8
+ def initialize(top_scope, controller_path, options)
9
9
  @top_scope = top_scope
10
- @controller_name = controller_name
10
+ @controller_path = controller_path
11
11
  @action_scopes = {}
12
12
  @aliases = {}
13
13
  @options = options
@@ -24,7 +24,7 @@ module Bread
24
24
 
25
25
  def get_crumbset(action_name)
26
26
  action_name = get_aliased_action_name(action_name)
27
- action_scope = @action_scopes[action_name] || raise("no action scope for '#{action_name}'")
27
+ action_scope = @action_scopes[action_name] || raise("no action scope for #{@controller_path}#'#{action_name}'")
28
28
  action_scope.crumbset
29
29
  end
30
30
 
@@ -56,12 +56,12 @@ module Bread
56
56
 
57
57
  def define_parent_crumbs
58
58
  @parent_crumbs = @options[:parent_crumbs] || []
59
- raise "parent_crumbs must be an Array ----> controller(:#{controller_name})" if !@parent_crumbs.is_a?(Array)
59
+ raise "parent_crumbs must be an Array ----> controller(:#{controller_path})" if !@parent_crumbs.is_a?(Array)
60
60
  end
61
61
 
62
62
  def raise_if_any_invalid_option
63
63
  invalid_option = (@options.keys - [:parent_crumbs]).first
64
- raise "Invalid option :#{invalid_option} ----> controller(:#{controller_name}, #{invalid_option}: '...') do" if invalid_option
64
+ raise "Invalid option :#{invalid_option} ----> controller(:#{controller_path}, #{invalid_option}: '...') do" if invalid_option
65
65
  end
66
66
  end
67
67
  end
@@ -7,14 +7,15 @@ module Bread
7
7
  @controllers = {}
8
8
  end
9
9
 
10
- def controller(controller_name, options={}, &block)
11
- @controllers[controller_name] = controller_scope = ControllerScope.new(self, controller_name, options)
10
+ def controller(controller_path, options={}, &block)
11
+ controller_path = controller_path.to_s
12
+ @controllers[controller_path] = controller_scope = ControllerScope.new(self, controller_path, options)
12
13
  controller_scope.instance_eval(&block)
13
14
  true
14
15
  end
15
16
 
16
- def get_controller_scope(controller_name)
17
- @controllers[controller_name.to_sym] || raise("no controller #{controller_name}")
17
+ def get_controller_scope(controller_path)
18
+ @controllers[controller_path.to_s] || raise("no controller #{controller_path} in #{@controllers.keys}")
18
19
  end
19
20
 
20
21
 
data/lib/bread/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bread
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -1,10 +1,14 @@
1
1
  class ProductPhotosController < ApplicationController
2
- before_action :set_product
3
- before_action :set_product_photo, only: [:show, :edit, :update, :destroy]
2
+ # Use callbacks to share common setup or constraints between actions.
3
+ before_actions do
4
+ actions { @product = Product.find(params[:product_id]) }
5
+ actions(:index) { @product_photos = @product.product_photos }
6
+ actions(:new, :create) { @product_photo = @product.product_photos.build(product_photo_params) }
7
+ actions(:show, :edit, :update, :destroy) { @product_photo = @product.product_photos.find(params[:id]) }
8
+ end
4
9
 
5
10
  # GET /product_photos
6
11
  def index
7
- @product_photos = @product.product_photos
8
12
  end
9
13
 
10
14
  # GET /product_photos/1
@@ -13,7 +17,6 @@ class ProductPhotosController < ApplicationController
13
17
 
14
18
  # GET /product_photos/new
15
19
  def new
16
- @product_photo = @product.product_photos.build
17
20
  end
18
21
 
19
22
  # GET /product_photos/1/edit
@@ -22,8 +25,6 @@ class ProductPhotosController < ApplicationController
22
25
 
23
26
  # POST /product_photos
24
27
  def create
25
- @product_photo = @product.product_photos.build(product_photo_params)
26
-
27
28
  if @product_photo.save
28
29
  redirect_to [@product, @product_photo], notice: 'Product photo was successfully created.'
29
30
  else
@@ -50,18 +51,13 @@ class ProductPhotosController < ApplicationController
50
51
  end
51
52
 
52
53
  private
53
- # Use callbacks to share common setup or constraints between actions.
54
-
55
- def set_product
56
- @product = Product.find(params[:product_id])
57
- end
58
-
59
- def set_product_photo
60
- @product_photo = @product.product_photos.find(params[:id])
61
- end
62
54
 
63
55
  # Only allow a trusted parameter "white list" through.
64
56
  def product_photo_params
65
- params.require(:product_photo).permit(:product_id, :name, :order)
57
+ if params[:product_photo]
58
+ params.require(:product_photo).permit(:name, :order)
59
+ else
60
+ {}
61
+ end
66
62
  end
67
63
  end
@@ -1,5 +1,10 @@
1
1
  class ProductsController < ApplicationController
2
- before_action :set_product, only: [:show, :edit, :update, :destroy]
2
+ # Use callbacks to share common setup or constraints between actions.
3
+ before_actions do
4
+ actions(:new, :create) { @product = Product.new(product_params) }
5
+ actions(:show, :edit, :update, :destroy) { @product = Product.find(params[:id]) }
6
+ end
7
+
3
8
 
4
9
  # GET /products
5
10
  def index
@@ -56,13 +61,12 @@ class ProductsController < ApplicationController
56
61
  end
57
62
 
58
63
  private
59
- # Use callbacks to share common setup or constraints between actions.
60
- def set_product
61
- @product = Product.find(params[:id])
62
- end
63
-
64
64
  # Only allow a trusted parameter "white list" through.
65
65
  def product_params
66
- params.require(:product).permit(:name, :category)
66
+ if params[:product]
67
+ params.require(:product).permit(:name, :category)
68
+ else
69
+ {}
70
+ end
67
71
  end
68
72
  end
@@ -15,4 +15,18 @@ Bread.actions.config do
15
15
  actions(:edit) { crumbs :@photos, :@photo, :@edit_photo }
16
16
  end
17
17
 
18
+
19
+ #devise
20
+ controller 'devise/sessions' do
21
+ actions(:new) { crumbs :@root, :@devise_sign_in }
22
+ end
23
+ controller 'devise/registrations' do
24
+ actions(:new) { crumbs :@root, :@devise_sign_up }
25
+ actions(:edit) { crumbs :@root, :@devise_edit_user }
26
+ end
27
+ controller 'devise/passwords' do
28
+ actions(:new) { crumbs :@root, :@devise_sign_in, :@devise_remember }
29
+ actions(:edit) { crumbs :@root, :@devise_sign_in, :@devise_remember }
30
+ end
31
+
18
32
  end
@@ -19,4 +19,11 @@ Bread.crumbs.config do
19
19
  crumb(:@edit_photo) { to "Edit", h.edit_product_product_photo_path }
20
20
  crumb(:@photo) { to @product_photo.unchanged_name, h.product_product_photo_path }
21
21
 
22
+ # devise
23
+ crumb(:@devise_sign_in) { to "Sign In", h.new_user_session_path }
24
+ crumb(:@devise_sign_up) { to "Sign Up", h.new_user_registration_path }
25
+ crumb(:@devise_edit_user) { to "Edit Profile", h.edit_user_registration_path }
26
+ crumb(:@devise_remember) { to "Forgot Password", h.new_user_password_path }
27
+
28
+
22
29
  end
@@ -20,6 +20,13 @@
20
20
  <p class="alert"><%= alert %></p>
21
21
 
22
22
 
23
+ <% if (current_user rescue false) %>
24
+ <p class="current_user"><%= current_user.email %></p>
25
+ <%= link_to "Sign Out", destroy_user_session_path, method: :delete %>
26
+ <% else %>
27
+ <p class="current_user">Guest</p>
28
+ <% end %>
29
+
23
30
 
24
31
  <%= yield %>
25
32
 
@@ -11,10 +11,6 @@
11
11
  </div>
12
12
  <% end %>
13
13
 
14
- <div class="field">
15
- <%= f.label :product %><br>
16
- <%= f.text_field :product %>
17
- </div>
18
14
  <div class="field">
19
15
  <%= f.label :name %><br>
20
16
  <%= f.text_field :name %>
@@ -30,6 +30,7 @@ Dummy::Application.configure do
30
30
  # The :test delivery method accumulates sent emails in the
31
31
  # ActionMailer::Base.deliveries array.
32
32
  config.action_mailer.delivery_method = :test
33
+ config.action_mailer.default_url_options = {host: 'example.com'}
33
34
 
34
35
  # Print deprecation notices to the stderr.
35
36
  config.active_support.deprecation = :stderr
@@ -0,0 +1,146 @@
1
+ <% if namespaced? -%>
2
+ require_dependency "<%= namespaced_file_path %>/application_controller"
3
+
4
+ <% end -%>
5
+ <% module_namespacing do -%>
6
+ class <%= controller_class_name %>Controller < ApplicationController
7
+
8
+ # load and authorize resources
9
+ before_actions do
10
+ #all actions
11
+ # actions { }
12
+
13
+ # building actions
14
+ actions(:new, :create) { @<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %> }
15
+
16
+ # member actions, will raise a 404 if the model is not found
17
+ actions(
18
+ :show, :edit, :update, :destroy
19
+ ) { @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> }
20
+ end
21
+
22
+ authorize_resource
23
+
24
+
25
+
26
+
27
+
28
+ # GET <%= route_url %>
29
+ def index
30
+ @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
31
+ end
32
+
33
+
34
+
35
+
36
+ # GET <%= route_url %>/1
37
+ # GET <%= route_url %>/1.json
38
+ def show
39
+ end
40
+
41
+ # GET <%= route_url %>/new
42
+ def new
43
+ end
44
+
45
+ # GET <%= route_url %>/1/edit
46
+ def edit
47
+ end
48
+
49
+
50
+
51
+
52
+ # POST <%= route_url %>
53
+ def create
54
+ if @<%= orm_instance.save %>
55
+ redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %>
56
+ else
57
+ render action: 'new'
58
+ end
59
+ end
60
+
61
+ # PATCH/PUT <%= route_url %>/1
62
+ def update
63
+ if @<%= orm_instance.update("#{singular_table_name}_params") %>
64
+ redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully updated.'" %>
65
+ else
66
+ render action: 'edit'
67
+ end
68
+ end
69
+
70
+ # DELETE <%= route_url %>/1
71
+ def destroy
72
+ if @<%= orm_instance.destroy %>
73
+ redirect_to <%= index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %>
74
+ else
75
+ render action: 'edit'
76
+ end
77
+ end
78
+
79
+
80
+
81
+ private
82
+
83
+ # Only allow a trusted parameter "white list" through.
84
+ def <%= "#{singular_table_name}_params" %>
85
+ if params[<%= ":#{singular_table_name}" %>]
86
+ <%- if attributes_names.empty? -%>
87
+ params[<%= ":#{singular_table_name}" %>]
88
+ <%- else -%>
89
+ params.require(<%= ":#{singular_table_name}" %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
90
+ <%- end -%>
91
+ else
92
+ {}
93
+ end
94
+ end
95
+ end
96
+ <% end -%>
97
+
98
+
99
+ ################
100
+ # JSON BUILDER #
101
+ ################
102
+
103
+ # # POST <%= route_url %>
104
+ # # POST <%= route_url %>.json
105
+ # def create
106
+ # respond_to do |format|
107
+ # if @<%= orm_instance.save %>
108
+ # format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %> }
109
+ # format.json { render action: 'show', status: :created, location: <%= "@#{singular_table_name}" %> }
110
+ # else
111
+ # format.html { render action: 'new' }
112
+ # format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
113
+ # end
114
+ # end
115
+ # end
116
+
117
+ # # PATCH/PUT <%= route_url %>/1
118
+ # # PATCH/PUT <%= route_url %>/1.json
119
+ # def update
120
+ # respond_to do |format|
121
+ # if @<%= orm_instance.update("#{singular_table_name}_params") %>
122
+ # format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully updated.'" %> }
123
+ # format.json { render action: 'show', status: :ok, location: <%= "@#{singular_table_name}" %> }
124
+ # else
125
+ # format.html { render action: 'edit' }
126
+ # format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
127
+ # end
128
+ # end
129
+ # end
130
+
131
+ # # DELETE <%= route_url %>/1
132
+ # # DELETE <%= route_url %>/1.json
133
+ # def destroy
134
+ # respond_to do |format|
135
+ # if @<%= orm_instance.destroy %>
136
+ # format.html { redirect_to <%= index_helper %>_url, notice: <%= "'#{human_name} was successfully destroyed.'" %> }
137
+ # format.json { render action: 'index', status: :ok, location: <%= "@#{singular_table_name}" %> }
138
+ # else
139
+ # format.html { render action: 'edit' }
140
+ # format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity }
141
+ # end
142
+ # end
143
+ # end
144
+
145
+
146
+
@@ -1,4 +1,3 @@
1
- puts File.expand_path("..", __FILE__).to_s
2
1
  require 'test_helper'
3
2
 
4
3
  class BreadTest < ActiveSupport::TestCase
@@ -0,0 +1,166 @@
1
+ require 'test_helper'
2
+
3
+ class DeviseGuestNavigationTest < ActionDispatch::IntegrationTest
4
+ setup do
5
+ @email = 'test@gmail.com'
6
+ @password = '12345678'
7
+ @sample_user = User.create! email: @email, password: @password
8
+ end
9
+
10
+ test "should sign in" do
11
+ visit new_user_session_path
12
+ # bread
13
+ assert_crumb "Home"
14
+ assert_crumb "Sign In"
15
+
16
+ fill_in_email_password_click(@email, @password, nil, 'Sign in')
17
+
18
+ assert page.has_content?('Signed in successfully.'), page.body
19
+ end
20
+
21
+ test "shouldnt sign in" do
22
+ visit new_user_session_path
23
+
24
+ click_button('Sign in')
25
+
26
+ assert page.has_content?('Invalid email or password.'), page.body
27
+ end
28
+
29
+ test "should sign up" do
30
+ visit new_user_registration_path
31
+ # bread
32
+ assert_crumb "Home"
33
+ assert_crumb "Sign Up"
34
+ fill_in_email_password_click("new@gmail.com", @password, @password, 'Sign up')
35
+
36
+ assert page.has_content?('Welcome! You have signed up successfully.'), page.body
37
+ end
38
+
39
+ test "shouldnt sign up" do
40
+ visit new_user_registration_path
41
+ click_button('Sign up')
42
+
43
+ assert page.has_content?('prohibited this user from being'), page.body
44
+ end
45
+
46
+ test "should remember" do
47
+ visit new_user_password_path
48
+ # bread
49
+ assert_crumb "Home"
50
+ assert_crumb "Sign In"
51
+ assert_crumb "Forgot Password"
52
+ fill_in_email_password_click(@email, nil, nil, 'Send me')
53
+
54
+ assert page.has_content?('You will receive an email with instructions about how to reset your password in a few minutes.'), page.body
55
+ end
56
+
57
+ test "shouldnt remember when blank" do
58
+ visit new_user_password_path
59
+ click_button('Send me')
60
+
61
+ assert page.has_content?('prohibited this user from being'), page.body
62
+ end
63
+
64
+ test "shouldnt remember when wrong" do
65
+ visit new_user_password_path
66
+ fill_in_email_password_click('wrong', nil, nil, 'Send me')
67
+
68
+ assert page.has_content?('prohibited this user from being'), page.body
69
+ end
70
+
71
+ test "should edit password" do
72
+ raw_reset_password_token = User.last.send_reset_password_instructions
73
+
74
+ visit edit_user_password_path(reset_password_token: raw_reset_password_token)
75
+
76
+ # bread
77
+ assert_crumb "Home"
78
+ assert_crumb "Sign In"
79
+ assert_crumb "Forgot Password"
80
+
81
+ fill_in 'New password', with: '12341234'
82
+ fill_in 'Confirm new password', with: '12341234'
83
+ click_button 'Change'
84
+
85
+ assert page.has_content?('Your password was changed successfully. You are now signed in.'), page.body
86
+ end
87
+
88
+ test "shouldnt edit password when no token" do
89
+ visit edit_user_password_path
90
+
91
+ assert page.has_content?('please make sure you used the full URL provided.'), page.body
92
+ end
93
+
94
+ test "shouldnt edit password when no password" do
95
+ raw_reset_password_token = User.last.send_reset_password_instructions
96
+
97
+ visit edit_user_password_path(reset_password_token: raw_reset_password_token)
98
+ click_button 'Change'
99
+
100
+ assert page.has_content?('prohibited this user from being saved:'), page.body
101
+ end
102
+
103
+ end
104
+
105
+ class DeviseUserNavigationTest < ActionDispatch::IntegrationTest
106
+ setup do
107
+ @email = 'test@gmail.com'
108
+ @password = '12345678'
109
+ sign_in(@email, @password)
110
+ @new_password = '12341234'
111
+ end
112
+
113
+ test "should edit profile email" do
114
+ visit edit_user_registration_path
115
+ # bread
116
+ assert_crumb "Home"
117
+ assert_crumb "Edit Profile"
118
+
119
+ fill_in('Email', with: "omg-#{@email}")
120
+ fill_in('Current password', with: @password)
121
+ click_button 'Update'
122
+
123
+ assert page.has_content?('You updated your account successfully.'), page.body
124
+ end
125
+
126
+ test "shouldnt edit profile when no match" do
127
+ visit edit_user_registration_path
128
+ fill_in('Password', with: @new_password)
129
+ click_button 'Update'
130
+
131
+ assert page.has_content?("doesn't match"), page.body
132
+ end
133
+
134
+ test "shouldnt edit profile when current password is blank" do
135
+ visit edit_user_registration_path
136
+ fill_in('Password', with: @new_password)
137
+ fill_in('Password confirmation', with: @new_password)
138
+ click_button 'Update'
139
+
140
+ assert page.has_content?("can't be blank"), page.body
141
+ end
142
+
143
+ test "should edit profile password" do
144
+ visit edit_user_registration_path
145
+ fill_in('Current password', with: @password)
146
+ fill_in('Password', with: @new_password)
147
+ fill_in('Password confirmation', with: @new_password)
148
+ click_button 'Update'
149
+
150
+ assert page.has_content?("You updated your account successfully."), page.body
151
+ end
152
+
153
+ test "should remove profile" do
154
+ visit edit_user_registration_path
155
+ click_button 'Cancel my account'
156
+
157
+ assert page.has_content?('Bye! Your account was successfully cancelled. We hope to see you again soon.'), page.body
158
+ end
159
+
160
+ test "should sign out" do
161
+ click_link 'Sign Out'
162
+
163
+ assert page.has_content?('Signed out successfully.'), page.body
164
+ end
165
+
166
+ end
@@ -1,10 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class NavigationTest < ActionDispatch::IntegrationTest
4
- fixtures :all
4
+ # fixtures :all
5
5
 
6
- # test "the truth" do
7
- # assert true
8
- # end
6
+ test "the truth" do
7
+ assert true
8
+ end
9
9
  end
10
10
 
@@ -6,11 +6,32 @@
6
6
 
7
7
 
8
8
  def assert_crumb(text)
9
- assert_select("li a", text, "<li><a>#{text.magenta}</a></li> should be included in #{get_clean_response_body.blue} but wasn't")
9
+ if response.present?
10
+ assert_select("ul#breadcrumbs li a", text, get_clean_response_body_error(text))
11
+ else
12
+ result = page.all("ul#breadcrumbs li a", text: text)
13
+ case result.count
14
+ when 0
15
+ assert(false, get_clean_response_body_error(text))
16
+ when 1
17
+ assert(true)
18
+ else
19
+ assert(false, get_clean_response_body_error(text))
20
+ end
21
+
22
+ end
10
23
  end
11
24
 
12
25
  def get_clean_response_body
13
- response.body.gsub("\n", '').gsub(' ', '')
26
+ if response.present?
27
+ response
28
+ else
29
+ page
30
+ end.body.gsub("\n", '').gsub(' ', '')
31
+ end
32
+
33
+ def get_clean_response_body_error(text)
34
+ "<li><a>#{text.magenta}</a></li> should be included exactly once in #{get_clean_response_body.blue} but wasn't"
14
35
  end
15
36
 
16
37
 
@@ -0,0 +1,20 @@
1
+
2
+
3
+
4
+ def fill_in_email_password_click(email, password, password2, button_text)
5
+ fill_in('Email', with: email)
6
+ fill_in('Password', with: password) if password
7
+ fill_in('Password confirmation', with: password2) if password2
8
+ click_button button_text
9
+ end
10
+
11
+
12
+ def sign_in(email, password)
13
+ User.create! email: email, password: password
14
+
15
+ visit new_user_session_path
16
+ fill_in_email_password_click(email, password, nil, 'Sign in')
17
+
18
+ assert page.has_content?('Signed in successfully.'), page.body
19
+ end
20
+
data/test/test_helper.rb CHANGED
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
+ require 'capybara/rails'
6
7
 
7
8
  Rails.backtrace_cleaner.remove_silencers!
8
9
 
@@ -13,3 +14,8 @@ Dir["#{File.dirname(__FILE__)}/dummy/test/support/**/*.rb"].each { |f| require f
13
14
  if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
15
  ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
15
16
  end
17
+
18
+ class ActionDispatch::IntegrationTest
19
+ # Make the Capybara DSL available in all integration tests
20
+ include Capybara::DSL
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bread
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Pinto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-07 00:00:00.000000000 Z
11
+ date: 2014-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,6 +133,7 @@ files:
133
133
  - test/dummy/db/schema.rb
134
134
  - test/dummy/db/test.sqlite3
135
135
  - test/dummy/lib/assets/.keep
136
+ - test/dummy/lib/templates/rails/scaffold_controller/controller.rb
136
137
  - test/dummy/log/.keep
137
138
  - test/dummy/public/404.html
138
139
  - test/dummy/public/422.html
@@ -146,11 +147,13 @@ files:
146
147
  - test/dummy/test/fixtures/users.yml
147
148
  - test/dummy/test/helpers/product_photos_helper_test.rb
148
149
  - test/dummy/test/helpers/products_helper_test.rb
150
+ - test/dummy/test/integration/devise_test.rb
149
151
  - test/dummy/test/integration/navigation_test.rb
150
152
  - test/dummy/test/models/product_photo_test.rb
151
153
  - test/dummy/test/models/product_test.rb
152
154
  - test/dummy/test/models/user_test.rb
153
155
  - test/dummy/test/support/asserts.rb
156
+ - test/dummy/test/support/others.rb
154
157
  - test/test_helper.rb
155
158
  homepage: https://github.com/hi/bread
156
159
  licenses:
@@ -244,6 +247,7 @@ test_files:
244
247
  - test/dummy/db/schema.rb
245
248
  - test/dummy/db/test.sqlite3
246
249
  - test/dummy/lib/assets/.keep
250
+ - test/dummy/lib/templates/rails/scaffold_controller/controller.rb
247
251
  - test/dummy/log/.keep
248
252
  - test/dummy/public/404.html
249
253
  - test/dummy/public/422.html
@@ -257,9 +261,11 @@ test_files:
257
261
  - test/dummy/test/fixtures/users.yml
258
262
  - test/dummy/test/helpers/product_photos_helper_test.rb
259
263
  - test/dummy/test/helpers/products_helper_test.rb
264
+ - test/dummy/test/integration/devise_test.rb
260
265
  - test/dummy/test/integration/navigation_test.rb
261
266
  - test/dummy/test/models/product_photo_test.rb
262
267
  - test/dummy/test/models/product_test.rb
263
268
  - test/dummy/test/models/user_test.rb
264
269
  - test/dummy/test/support/asserts.rb
270
+ - test/dummy/test/support/others.rb
265
271
  - test/test_helper.rb