Ruby on Rails Wednesday, May 1, 2013

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 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    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: "mailer@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/-/XsFTHFWMRYwJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment