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 seconds2 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 17352
>
> The 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 }end
>
> Controller:
>
> 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
> endend
>
> 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...-hcDgGtZH8xNBDgjK7y7TUQ@public.gmane.org <javascript:>"
> 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
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.