Working and specced supplier signup
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
//
|
//
|
||||||
//= require jquery
|
//= require jquery
|
||||||
//= require jquery_ujs
|
//= require jquery_ujs
|
||||||
//= require jquery-ui
|
//= require jquery.ui.all
|
||||||
//= require bootstrap
|
//= require bootstrap
|
||||||
//= require_directory .
|
//= require_directory .
|
||||||
//= require_self
|
//= require_self
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
class ConfirmationsController < Devise::ConfirmationsController
|
||||||
|
private
|
||||||
|
|
||||||
|
def after_confirmation_path_for(resource_name, resource)
|
||||||
|
case resource_name
|
||||||
|
when :supplier then supplier_settings_path
|
||||||
|
else root_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -104,12 +104,12 @@ class Supplier
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Send confirmation instructions by email
|
# Send confirmation instructions by email
|
||||||
def send_confirmation_instructions
|
def send_confirmation_instructions(*args)
|
||||||
self.confirmation_token = nil if reconfirmation_required?
|
self.confirmation_token = nil if reconfirmation_required?
|
||||||
@reconfirmation_required = false
|
@reconfirmation_required = false
|
||||||
|
|
||||||
@bypass_postpone = true and generate_confirmation_token! if self.confirmation_token.blank?
|
@bypass_postpone = true and generate_confirmation_token! if self.confirmation_token.blank?
|
||||||
self.devise_mailer.confirmation_instructions(self).deliver
|
self.devise_mailer.confirmation_instructions(self, confirmation_token).deliver
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_order(id)
|
def find_order(id)
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
h2= t('devise.registrations.title')
|
||||||
|
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), html: {class: 'form-horizontal'}) do |f|
|
||||||
|
= devise_error_messages!
|
||||||
|
.control-group
|
||||||
|
= f.label :name, class: 'control-label'
|
||||||
|
.controls= f.text_field :name
|
||||||
|
.control-group
|
||||||
|
= f.label :email, class: 'control-label'
|
||||||
|
.controls= f.email_field :email
|
||||||
|
.control-group
|
||||||
|
= f.label :password, class: 'control-label'
|
||||||
|
.controls= f.password_field :password
|
||||||
|
.control-group
|
||||||
|
= f.label :password_confirmation, class: 'control-label'
|
||||||
|
.controls= f.password_field :password_confirmation
|
||||||
|
.control-group
|
||||||
|
.controls
|
||||||
|
= f.submit t('devise.registrations.button'), class: 'btn btn-primary'
|
||||||
|
= render "devise_links"
|
||||||
@@ -48,6 +48,8 @@ Devise.setup do |config|
|
|||||||
# modifying a user and when used to authenticate or find a user. Default is :email.
|
# modifying a user and when used to authenticate or find a user. Default is :email.
|
||||||
config.strip_whitespace_keys = [ :email ]
|
config.strip_whitespace_keys = [ :email ]
|
||||||
|
|
||||||
|
config.allow_insecure_sign_in_after_confirmation = true
|
||||||
|
|
||||||
# Tell if authentication through request.params is enabled. True by default.
|
# Tell if authentication through request.params is enabled. True by default.
|
||||||
# It can be set to an array that will enable params authentication only for the
|
# It can be set to an array that will enable params authentication only for the
|
||||||
# given strategies, for example, `config.params_authenticatable = [:database]` will
|
# given strategies, for example, `config.params_authenticatable = [:database]` will
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
Qwaiter::Application.routes.draw do
|
Qwaiter::Application.routes.draw do
|
||||||
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
|
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
|
||||||
devise_for :suppliers
|
devise_for :suppliers, controllers: { confirmations: 'confirmations' }
|
||||||
devise_for :administrators
|
devise_for :administrators
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :users
|
resources :users
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Feature: Manage settings
|
||||||
|
Scenario: Changing the supplier email
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Feature: A supplier can sign up
|
||||||
|
Scenario: It works
|
||||||
|
When I visit the supplier signup path
|
||||||
|
And fill in the supplier signup form with new credentials
|
||||||
|
And click on the supplier signup submit button
|
||||||
|
Then a new unconfirmed supplier with the new signup credentials should be created
|
||||||
|
And a supplier signup confirmation mail should be sent containing a link to the token
|
||||||
|
When I visit the supplier signup confirmation path with the correct token
|
||||||
|
Then the new signup supplier should be confirmed
|
||||||
|
And I should be redirected to the supplier settings page
|
||||||
|
|
||||||
@@ -9,3 +9,8 @@ end
|
|||||||
step "I visit the supplier section path" do
|
step "I visit the supplier section path" do
|
||||||
visit "/supplier/sections/#{@section.id}"
|
visit "/supplier/sections/#{@section.id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
step "I should be redirected to the supplier settings page" do
|
||||||
|
page.current_path.should == supplier_settings_path
|
||||||
|
end
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
step "I visit the supplier signup path" do
|
||||||
|
visit new_supplier_registration_path
|
||||||
|
end
|
||||||
|
|
||||||
|
step "fill in the supplier signup form with new credentials" do
|
||||||
|
find('#supplier_name').set 'Signup Supplier'
|
||||||
|
find('#supplier_email').set 'signup_supplier@example.com'
|
||||||
|
find('#supplier_password').set 'SignupSupplier'
|
||||||
|
find('#supplier_password_confirmation').set 'SignupSupplier'
|
||||||
|
end
|
||||||
|
|
||||||
|
step "click on the supplier signup submit button" do
|
||||||
|
find('[name="commit"]').click
|
||||||
|
end
|
||||||
|
|
||||||
|
step "a new unconfirmed supplier with the new signup credentials should be created" do
|
||||||
|
@signup_supplier = Supplier.find_by_email('signup_supplier@example.com')
|
||||||
|
@signup_supplier.should be_present
|
||||||
|
@signup_supplier.should_not be_confirmed
|
||||||
|
end
|
||||||
|
|
||||||
|
step "a supplier signup confirmation mail should be sent containing a link to the token" do
|
||||||
|
mail = ActionMailer::Base.deliveries.last
|
||||||
|
mail.should be_present
|
||||||
|
mail.body.should match /confirmation_token=#{@signup_supplier.confirmation_token}/
|
||||||
|
end
|
||||||
|
|
||||||
|
step "I visit the supplier signup confirmation path with the correct token" do
|
||||||
|
visit supplier_confirmation_path(confirmation_token: @signup_supplier.confirmation_token)
|
||||||
|
end
|
||||||
|
|
||||||
|
step "the new signup supplier should be confirmed" do
|
||||||
|
@signup_supplier.reload
|
||||||
|
@signup_supplier.should be_confirmed
|
||||||
|
end
|
||||||
+1
-1
@@ -64,7 +64,7 @@ RSpec.configure do |config|
|
|||||||
end
|
end
|
||||||
|
|
||||||
config.before :each, type: :feature do
|
config.before :each, type: :feature do
|
||||||
Supplier.any_instance.stub send_confirmation_instructions: true
|
#Supplier.any_instance.stub send_confirmation_instructions: true
|
||||||
end
|
end
|
||||||
|
|
||||||
# If true, the base class of anonymous controllers will be inferred
|
# If true, the base class of anonymous controllers will be inferred
|
||||||
|
|||||||
Reference in New Issue
Block a user