public
Created

Test data wrong

  • Download Gist
_signupform.html.erb
HTML+ERB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
<%= form_for @customer do |c|%>
<% if @customer.errors.any?%>
<div id="form_errors">
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li>
<%= msg %>
</li>
<%end%>
</ul>
</div>
<% end %>
<p>
<%= c.label :id%>
<%= c.text_field :id%>
</p>
<p>
<%= c.label :name %>
<%= c.text_field :name%>
</p>
<h3>Please ad a valid e-mail to receive your credentials:</h3>
<p>
<%= c.label :email%>
<%= c.text_field :email%>
</p>
<p>
<%= c.label :email_confirmation %>
<%= c.text_field :email_confirmation %>
</p>
<p class="button">
<%= c.submit "Create account"%>
</p>
<% end %>
customer.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
require 'bcrypt'
 
class Customer < ActiveRecord::Base
include BCrypt
attr_accessible :email
attr_accessor :is_signup
validates :email, :presence => true, :confirmation => true, :format => {:with => /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/}, :uniqueness => true
def self.authenticate(login, password)
#1. Find an authentication with this login and password
#From the first 7 digits of the login, I can find the customer + authentication
customerid = login[0,7]
customer = Customer.where('id = ? OR email = ?', customerid, login).first
if customer
if customer.authentication && Password.new(customer.authentication.password) == password
return customer
else
return nil
end
else
return nil
end
end
def init_reset()
self.reset_token = nil
self.reset_token_init = nil
if self.save
return true
else
return false
end
end
def create_authentication
authentication = Authentication.new
login = self.id.to_s << self.zipcode.to_s
randPassword = RandomPasswordGenerator.generate(8, :skip_symbols => true)
authentication.new_authentication(login,self.id, randPassword)
contactperson = ContactPerson.find(self.contact_person_id)
if contactperson
#Contactperson found, add to this customer
if self.authentication = authentication
#Authentication saved!
#Send mail with information to the customer
#Mail includes: login, password
CustomerMailer.signup_succeeded(self, randPassword).deliver
#Send mail with information to the contact_person
#Mail includes: customer_name, customer_number, customer_email, customer_login
CustomerMailer.signup_contactInform(self, contactperson).deliver
success = [:success => true,:message => "Successfully signed up! Please view your e-mail for further instructions."]
return success
else
success = [:success => false,:message => "Error saving your authentciation, contact the administrator."]
return success
end
else
success = [:success => false,:message => "Error finding your contactperson, contact the administrator."]
return success
end
end
def fill_standard(id, name, email, confirmation)
self.id = id
self.name = name
self.email = email
self.email_confirmation = confirmation
end
def send_reset_email
randPassword = RandomPasswordGenerator.generate(8, :skip_symbols => true)
self.reset_token = randPassword
self.reset_token_init = Time.zone.now
save!
CustomerMailer.reset_email(self).deliver
end
has_one :authentication
belongs_to :contact_person
belongs_to :country
accepts_nested_attributes_for :authentication
end
customers_controller.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
def create
@customer = Customer.new()
@customer.fill_standard(params[:customer][:id],params[:customer][:name], params[:customer][:email],params[:customer][:email_confirmation])
dbCustomer = Customer.where("id = ?", @customer.id).first
if dbCustomer
#CUSTOMERNUMBER CORRECT
#Check if the input is matching!
if @customer.id == dbCustomer.id && @customer.name == dbCustomer.name
#INPUT IS MATCHING
#Check if the customer already has an account
auth = Authentication.where('customer_id = ? ', dbCustomer.id).first
if auth.class != Authentication
#TEST
#let the customer create his authentication
#Customer doesn't have an account yet!
#Update the customer with an e-mail:
unless dbCustomer.update_email(@customer.email, @customer.email_confirmation)
@customer = dbCustomer
@customer.is_signup = true
render :action => :edit
return
end
success = dbCustomer.create_authentication
 
if success[0][:success]
#AUTHENTICATION CREATED
flash[:notice] = success[0][:message]
redirect_to login_path
else
#Error creating authentication
flash[:notice] = success[0][:message]
redirect_to login_path
end
else
#User has already an account
flash[:notice] = "You already have an account."
redirect_to login_path
end
else
#INPUT MATCHING FAILED
#Give message there is no such customer in the database
flash[:notice] = "The customer with this specifications was not found... (" << params.to_s << ")"
redirect_to signup_path
end
else
#CUSTOMERNUMBER IS NOT CORRECT
#Give message there is no such customer in the database
flash[:notice] = "The customer with this specifications was not found... (" << params.to_s << ")"
redirect_to signup_path
end
end
 
def update
dbCustomer = Customer.find_by_id(params[:id])
@customer = dbCustomer
if dbCustomer.authentication
#Customer already exists
else
@customer = Customer.new()
@customer.fill_standard(params[:customer][:id],params[:customer][:name], params[:customer][:email],params[:customer][:email_confirmation])
#NO AUTHENTICATION YET SO PLEASE MAKE THE AUTHENTICATION!
dbCustomer.email = params[:customer][:email]
dbCustomer.email_confirmation = params[:customer][:email_confirmation]
unless dbCustomer.save
render :action => :edit
return
end
success = dbCustomer.create_authentication
if success[0][:success]
#AUTHENTICATION CREATED
flash[:notice] = success[0][:message]
redirect_to login_path
else
#Error creating authentication
flash[:notice] = success[0][:message]
redirect_to signup_path
end
end
end
 
def edit
@customer ||= Customer.find(session[:customer_id]) if session[:customer_id]
if @customer
if @customer.authentication.login_count == nil
@customer.is_signup = false
end
else
@customer = Customer.new
@customer.is_signup = true
end
end
customers_spec.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
require 'spec_helper'
 
describe "customers" do
let(:dbCustomer) {FactoryGirl.create(:signedup_customer)}
describe "signup" do
it "has right data" do
visit signup_path
fill_in :id, :with => dbCustomer.id
fill_in :name, :with => dbCustomer.name
fill_in :email, :with => dbCustomer.email
fill_in :email_confirmation, :with => dbCustomer.email
click_button "Create account"
#current_path.should eq(login_path)
page.should have_content("Forgot")
end
end
factories.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
FactoryGirl.define do
 
factory :signedup_customer, class: Customer do
id 2110001
name "Customername"
email "my.email@company.be"
address_1 "address1"
address_2 "address2"
zipcode 62
city "Bragha"
currency "PLN"
country_id "PL"
contact_person_id "AZU"
reset_token nil
reset_token_init nil
end
end
output
1 2 3 4 5 6 7 8 9
1) customers signup has right data
←[31mFailure/Error:←[0m ←[31mpage.should have_content("Forgot")←[0m
←[31mexpected there to be content "Forgot" in "Customer portal\n\t\n\t\tHome\n\t\t\n\t\tThe customer with this specificati
ons was not found... ({\"utf8\"=>\"√\", \"customer\"=>{\"id\"=>\"my.email@company.be\", \"name\"=>\"\", \"email\"=>\"\", \"email_co
nfirmation\"=>\"\"}, \"commit\"=>\"Create account\", \"action\"=>\"create\", \"controller\"=>\"customers\"})\n\t\n\t\t\n\t\n\t\n\t\t\t\t\tP
lease sign up to access the customer portal\n\t\t\t\n \t\n \t\tId\n \t\t\n \t\n \t\tName\n \t\t\n \tPlease ad a valid e-mail to rece
ive your credentials:\n \t\n \t\tEmail\n \t\t\n \t\n \t\tEmail confirmation\n \t\t\n \t\n \t\t\n \n\n\t\n\t\n\t\t\n\t\n\t\n\t\n"←[
0m
←[36m # ./spec/requests/customers_spec.rb:14:in `block (3 levels) in <top (required)>'←[0m

Why is in my customer the id=my.email@company.be?

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.