Note that there are some explanatory texts on larger screens.

plurals
  1. PORspec: Stub method that is in the controller
    primarykey
    data
    text
    <p>May I know how to stub method that is in the controller create method? I need to write the spec for this but I got these errors. I need to check the create method in controller must execute validate_fbid method before create a new company record in model.</p> <p>Error: </p> <pre><code>1) Companies new company create with valid information#validate_fbid should have correct parameters and return value Failure/Error: CompaniesController.create.should_receive(:validates_fbid).with(company) NoMethodError: undefined method `create' for CompaniesController:Class # ./spec/requests/companies_spec.rb:38:in `block (5 levels) in &lt;top (required)&gt;' 2) Companies new company create with valid information#validate_fbid should fbid validation passed Failure/Error: CompaniesController.create.stub(:validates_fbid).and_return('companyid') NoMethodError: undefined method `create' for CompaniesController:Class # ./spec/requests/companies_spec.rb:43:in `block (5 levels) in &lt;top (required)&gt;' </code></pre> <p>CompaniesController</p> <pre><code>def create company = Company.new(params[:company]) verifyfbid = validate_fbid(company) if verifyfbid != false if company.fbid.downcase == verifyfbid.downcase if company.save @message = "New company created." redirect_to root_path else @message = "Company create attempt failed. Please try again." render 'new' end else @message = "Company create attempt failed. Invalid facebook id." render 'new' end else @message = "Company create attempt failed. No such facebook id." render 'new' end end private def validate_fbid(company) uri = URI("http://graph.facebook.com/" + company.fbid) data = Net::HTTP.get(uri) username = JSON.parse(data)['username'] if username.nil? return false else "#{username}" end end </code></pre> <p>Requests/companies_spec.rb</p> <pre><code>context "#validate_fbid" do #validate fbid let(:company){ Company.new(name:'Example Company', url: 'www.company.com', fbid: 'companyid', desc: 'Company desc' )} it "should have correct parameters and return value" do CompaniesController.create.should_receive(:validates_fbid).with(company) .and_return('companyid') end it "should fbid validation passed" do CompaniesController.create.stub(:validates_fbid).and_return('companyid') company.fbid.should_not be_nil company.fbid.should == 'companyid' company.save expect { click_button submit }.to change(Company, :count).by(1) end end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload