Created
May 3, 2016 18:50
-
-
Save phsacramento/c7ace4ca53b6d19e90b9ec32531f82dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
``` | |
require 'rails_helper' | |
RSpec.describe Admin::CoursesController, type: :controller do | |
let(:valid_attributes) { | |
attributes_for(:course) | |
} | |
let(:invalid_attributes) { | |
attributes_for(:course, title: nil) | |
} | |
let(:valid_session) { {} } | |
describe 'GET #index' do | |
it "assigns all courses as @course" do | |
course = Course.create! valid_attributes | |
get :index, {}, valid_session | |
expect(assigns(:courses)).to eq([course]) | |
end | |
end | |
describe "GET #new" do | |
it "assigns a new Course as @course" do | |
get :new, {}, valid_session | |
expect(assigns(:course)).to be_a_new(Course) | |
end | |
end | |
describe "GET #show" do | |
it "assigns the requested course as @course" do | |
course = Course.create! valid_attributes | |
get :show, {:id => course.to_param}, valid_session | |
expect(assigns(:course)).to eq(course) | |
end | |
end | |
describe 'POST #create' do | |
context "with valid params" do | |
it "create a course" do | |
expect { | |
post :create, {:course => valid_attributes}, valid_session | |
}.to change(Course, :count).by(1) | |
end | |
it "assigns a newly created Course as @course" do | |
post :create, {:course => valid_attributes}, valid_session | |
expect(assigns(:course)).to be_a(Course) | |
expect(assigns(:course)).to be_persisted | |
end | |
it "redirects to the created course" do | |
post :create, {:course => valid_attributes}, valid_session | |
expect(response).to redirect_to([:admin, Course.last]) | |
end | |
end | |
context "with invalid params" do | |
it "assigns a newly created but unsaved @course as @course" do | |
post :create, {:course => invalid_attributes}, valid_session | |
expect(assigns(:course)).to be_a_new(Course) | |
end | |
it "re-renders the 'new' template" do | |
post :create, {:course => invalid_attributes}, valid_session | |
expect(response).to render_template("new") | |
end | |
end | |
end | |
describe 'PUT #update' do | |
context 'with valid params' do | |
let(:new_attributes) { | |
{ title: 'Título alterado' } | |
} | |
it "updates the requested course" do | |
course = Course.create! valid_attributes | |
put :update, {:id => course.to_param, :course => new_attributes}, valid_session | |
course.reload | |
expect(course.title).to eq('Título alterado') | |
end | |
it "assigns the requested course to @course" do | |
course = Course.create! valid_attributes | |
put :update, {:id => course.to_param, :course => new_attributes}, valid_session | |
expect(assigns(:course)).to eq(course) | |
end | |
it "redirects to the edit page for requested course" do | |
course = Course.create! valid_attributes | |
put :update, { id: course.to_param, course: new_attributes}, valid_session | |
course.reload | |
expect(response).to redirect_to edit_admin_course_path(course) | |
end | |
end | |
context 'with invalid params' do | |
it "assigns the course as @course" do | |
course = Course.create! valid_attributes | |
put :update, { id: course.to_param, course: invalid_attributes }, valid_session | |
expect(assigns(:course)).to eq(course) | |
end | |
it "re-renders the 'edit' template" do | |
course = Course.create! valid_attributes | |
put :update, { id: course.to_param, course: invalid_attributes }, valid_session | |
expect(response).to render_template(:edit) | |
end | |
end | |
end | |
describe "DELETE #destroy" do | |
it "destroys the requested course" do | |
course = Course.create! valid_attributes | |
expect { | |
delete :destroy, {:id => course.to_param}, valid_session | |
}.to change(Course, :count).by(-1) | |
end | |
it "redirects to the courses list" do | |
course = Course.create! valid_attributes | |
delete :destroy, {:id => course.to_param}, valid_session | |
expect(response).to redirect_to(admin_courses_path) | |
end | |
end | |
end | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment