I’m using
restful-authentication from
RSPEC 1.1.4 from Home · dchelimsky/rspec-rails Wiki · GitHub
(downloaded this week)
The spec for loging in work
I even have it working checking for authentication on the teachers
controller.
What I want to do is find students that belong to a teacher
So if I’m the teacher and I log in I want to see only my students.
Models
class Students < ActiveRecord::Base
belongs_to :teacher
end
class Teacher < ActiveRecord::Base
has_many :students
end
controller
class TeachersController < ApplicationController
GET /teachers
GET /teachers.xml
def index
@teachers = current_user.projects
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @teachers }
end
end
end
controler_spec
require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)
describe StudentsController do
describe “handling GET /students” do
before(:each) do
@student = mock_model(Student)
student.stub!(:find).and_return([@student])
@User = user_login # logs user in
end
def do_get
controller.logged_in?().should == true
get :index
end
it "should be successful" do
do_get
response.should be_success
end
it "should render index template" do
do_get
response.should render_template('index')
end
it "should find all students" do
Student.should_receive(:find).with(:all).and_return([@student])
do_get
end
it "should assign the found projects for the view" do
do_get
assigns[:student].should == [@student]
end
end
end
errors I get
Spec::Mocks::MockExpectationError in ‘StudentsController handling GET /
students should assign the found students for the
view’
Mock ‘Person_1155’ received unexpected message :students with (no
args)
C:/InstantRails-2.0-win/rails_apps/ztemp/app/controllers/
students_controller.rb:5:in index' ./spec/controllers/students_controller_spec.rb:14:in
do_get’
./spec/controllers/students_controller_spec.rb:35:
NoMethodError in ‘StudentsController handling GET /students should
find all students’
undefined method authenticate_with_http_basic' for #<Spec::Rails::Example::ControllerExampleGroup::Subclass_1::Subclass _1:0x43914b8> C:/InstantRails-2.0-win/rails_apps/ztemp/lib/authenticated_system.rb: 111:in
login_from_basic_auth’
C:/InstantRails-2.0-win/rails_apps/ztemp/lib/authenticated_system.rb:
12:in `current_person’
./spec/controllers/students_controller_spec.rb:29:
Spec::Mocks::MockExpectationError in ‘StudentsController handling GET /
students should render index template’
Mock ‘Person_1159’ received unexpected message :students with (no
args)
C:/InstantRails-2.0-win/rails_apps/ztemp/app/controllers/
students_controller.rb:5:in index' ./spec/controllers/students_controller_spec.rb:14:in
do_get’
./spec/controllers/students_controller_spec.rb:23:
Spec::Mocks::MockExpectationError in ‘StudentsController handling GET /
students should be successful’
Mock ‘Person_1161’ received unexpected message :students with (no
args)
C:/InstantRails-2.0-win/rails_apps/ztemp/app/controllers/
students_controller.rb:5:in index' ./spec/controllers/students_controller_spec.rb:14:in
do_get’
./spec/controllers/students_controller_spec.rb:18:
I think this is what is giving me grief
Student.should_receive(:find).with(:all).and_return([@student])
but I don’t know how to get it to work
Any help will be appreciated
John I