Working and specced supplier signup

This commit is contained in:
2013-10-30 15:29:47 +01:00
parent c8fb2ab069
commit 1af153e45f
11 changed files with 90 additions and 5 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
//
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery.ui.all
//= require bootstrap
//= require_directory .
//= 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
+2 -2
View File
@@ -104,12 +104,12 @@ class Supplier
end
# Send confirmation instructions by email
def send_confirmation_instructions
def send_confirmation_instructions(*args)
self.confirmation_token = nil if reconfirmation_required?
@reconfirmation_required = false
@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
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"
+2
View File
@@ -48,6 +48,8 @@ Devise.setup do |config|
# modifying a user and when used to authenticate or find a user. Default is :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.
# It can be set to an array that will enable params authentication only for the
# given strategies, for example, `config.params_authenticatable = [:database]` will
+1 -1
View File
@@ -1,6 +1,6 @@
Qwaiter::Application.routes.draw do
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
devise_for :suppliers
devise_for :suppliers, controllers: { confirmations: 'confirmations' }
devise_for :administrators
namespace :admin do
resources :users
@@ -0,0 +1,2 @@
Feature: Manage settings
Scenario: Changing the supplier email
+11
View File
@@ -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
visit "/supplier/sections/#{@section.id}"
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
View File
@@ -64,7 +64,7 @@ RSpec.configure do |config|
end
config.before :each, type: :feature do
Supplier.any_instance.stub send_confirmation_instructions: true
#Supplier.any_instance.stub send_confirmation_instructions: true
end
# If true, the base class of anonymous controllers will be inferred