Skip to content

Instantly share code, notes, and snippets.

@phsacramento
Created May 3, 2016 18:50
Show Gist options
  • Save phsacramento/c7ace4ca53b6d19e90b9ec32531f82dc to your computer and use it in GitHub Desktop.
Save phsacramento/c7ace4ca53b6d19e90b9ec32531f82dc to your computer and use it in GitHub Desktop.
```
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