Skip to content

Instantly share code, notes, and snippets.

@Fire-Dragon-DoL
Last active August 29, 2015 14:04
Show Gist options
  • Save Fire-Dragon-DoL/d788f713490599d8f7a0 to your computer and use it in GitHub Desktop.
Save Fire-Dragon-DoL/d788f713490599d8f7a0 to your computer and use it in GitHub Desktop.
bundle exec rspec spec/controllers/readers_controller_spec.rb
..FF**
Pending:
ReadersController POST create when save message returns to true redirects to root url
# Not yet implemented
# ./spec/controllers/readers_controller_spec.rb:45
ReadersController POST create when save message returns to true assigns a success flash message
# Not yet implemented
# ./spec/controllers/readers_controller_spec.rb:46
Failures:
1) ReadersController POST create sends new message to Reader class
Failure/Error: post :create, reader: params
NoMethodError:
undefined method `save' for #<RSpec::Mocks::AllowanceTarget:0xa77e1ec>
# ./app/controllers/readers_controller.rb:9:in `create'
# ./spec/controllers/readers_controller_spec.rb:37:in `block (3 levels) in <top (required)>'
2) ReadersController POST create sends save message to reader model
Failure/Error: post :create
ActionController::ParameterMissing:
param is missing or the value is empty: reader
# ./app/controllers/readers_controller.rb:16:in `reader_params'
# ./app/controllers/readers_controller.rb:8:in `create'
# ./spec/controllers/readers_controller_spec.rb:42:in `block (3 levels) in <top (required)>'
Finished in 0.12094 seconds (files took 3.36 seconds to load)
6 examples, 2 failures, 2 pending
Failed examples:
rspec ./spec/controllers/readers_controller_spec.rb:28 # ReadersController POST create sends new message to Reader class
rspec ./spec/controllers/readers_controller_spec.rb:39 # ReadersController POST create sends save message to reader model
require 'rails_helper'
RSpec.describe ReadersController, :type => :controller do
describe "GET new" do
let(:reader) { instance_double("Reader", save: true) }
it "assigns @reader variable to the view" do
#reader = mock_model("Reader").as_new_record.as_null_object
#reader = double(Reader)
#Reader.stub(:new).and_return(reader)
allow(Reader).to receive(:new).and_return(reader)
#allow(Reader).to receive(:new) { reader }
get :new
expect(assigns[:reader]).to eq(reader)
end
it "renders new template" do
get :new
expect(response).to render_template :new
end
end
describe "POST create" do
let(:reader) {allow(Reader)}
it "sends new message to Reader class" do
params = {
"email" => "[email protected]",
"password" => "pass",
"password_confirmation" => "pass"
}
allow(Reader).to receive(:new).and_return(reader)
expect(Reader).to receive(:new).with(params)
#Reader.should_receive(:new).with(params)
post :create, reader: params
end
it "sends save message to reader model" do
allow(Reader).to receive(:new).and_return(reader)
expect(reader).to receive(:save)
post :create, reader: { add_yout_params } # XXX: you should pass params here!!!
end
context "when save message returns to true" do
it "redirects to root url"
it "assigns a success flash message"
end
end
end
class ReadersController < ApplicationController
def new
@reader = Reader.new
end
def create
@reader = Reader.new(reader_params)
@reader.save
render nothing: true
end
private
def reader_params
params.require(:reader).permit(:email, :password, :password_confirmation )
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment