Ruby on Rails
Thursday, May 2, 2013
From the code you've posted, It seems everything is ok and should work. I suggest you do some debugging, try using the better_errors gem, it'll give you more informative errors. Run your rspec test using the -e flag to specify each individual test, through process of elimination you can probably get more traction. Also check your routes to make sure there are no syntax errors
On Wednesday, May 1, 2013 8:32:44 PM UTC-4, Mostafa Hussein wrote:
-- I have searched a lot for a solution, but I could not find it! I am trying to make a rails application after watching Michael Hartl's tutorial and when i fill data manually and submit it nothing happens and nothing records in the Mailers table and I am facing the following error:
Failures: 1) Mailer pages mail us with valid information should send a mail Failure/Error: expect { click_button submit}.to change(Mailer, :count).by(1) count should have been changed by 1, but was changed by 0 # ./spec/requests/mailer_pages_
spec.rb:31:in `block (4 levels) in <top (required)>' Finished in 0.89134 seconds 2 examples, 1 failure Failed examples: rspec ./spec/requests/mailer_pages_spec .rb:30 # Mailer pages mail us with valid information should send a mail Randomized with seed 17352The model file is:
class Mailer < ActiveRecord::Base attr_accessible :company_name, :contact_name, :address, :telephone, :email, :description before_save { |mailer| mailer.email = mailer.email.downcase } validates :company_name, length: { maximum: 50 } validates :contact_name, presence: true, length: { maximum: 40 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-
z]+\z/ i validates :email, presence: true, format: { with: VALID_EMAIL_REGEX } endController:
class MailersController < ApplicationController def new @mailer = Mailer.new end def create @mailer = Mailer.new(params[:mailer]) if @mailer.save redirect_to root_path else render 'new' end end end
Integration test:
require 'spec_helper' describe "Mailer pages" do subject { page } describe "mail us" do let(:submit) { "Send my Mail"} before { visit mailers_path } describe "with invalid information" do it "should not send a mail" do expect { click_button submit }.not_to change(Mailer, :count) end end describe "with valid information" do before do fill_in "Company name", with: "Mailer Company" fill_in "Contact name", with: "Mailer Contact" fill_in "Address", with: "Mailer Address" fill_in "Telephone", with: "123-456-789" fill_in "Email", with: "mai...@example.com" fill_in "Description", with: "something to say" end it "should send a mail" do expect { click_button submit}.to change(Mailer, :count).by(1) end end end end
And the form:
<% provide(:title , 'Mail Us') %> <h1>Mail Us</h1> <div class="row"> <div class="span6 offset3 hero-unit"> <%= form_for(@mailer) do |f| %> <%= f.label :company_name %> <%= f.text_field :company_name %> <%= f.label :contact_name %> <%= f.text_field :contact_name %> <%= f.label :address %> <%= f.text_field :address %> <%= f.label :telephone %> <%= f.text_field :telephone %> <%= f.label :email %> <%= f.text_field :email %> <%= f.label :description %> <%= f.text_field :description %> <%= f.submit "Send my Mail", class: "btn btn-large btn-primary"%> <% end %> </div> </div>
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/bBlaofccZjMJ.
For more options, visit https://groups.google.com/groups/opt_out.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment