Skip to content

Instantly share code, notes, and snippets.

@opan
Created January 18, 2016 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save opan/d3674a49d8fdf8de541e to your computer and use it in GitHub Desktop.
Save opan/d3674a49d8fdf8de541e to your computer and use it in GitHub Desktop.
rspec test model and controller examples. Opan Mustopah
# start model test
require "spec_helper"
module Mesin
describe User do
before do
@customer = create(:role, :customer)
@super_admin = create(:role, :super_admin)
end
it "cant create user if invalid email" do
expect(build(:user, :invalid_email)).not_to be_valid
end
it "email can't be nil" do
expect(build(:user, email: nil)).not_to be_valid
end
it "email must unique" do
create(:user, :valid_email)
expect {create(:user, :valid_email)}.to raise_error
end
it "user have many roles through role_users" do
user = create(:user, :valid_email)
expect {user.roles}.not_to raise_error
end
it "user have many role_users dependent on destroy" do
user = create(:user, :valid_email)
user.destroy
expect(user.role_users).to be_empty
end
describe "#set_default_role" do
context "if role blank" do
it "return role customer" do
user = build(:user, :valid_email)
expect(user.set_default_role).to eq @customer.id
end
end
end
describe "#role_super_admin_if_table_blank?" do
context "if table user still blank" do
it "set role as super_admin " do
user = build(:user, :valid_email)
expect(user.role_super_admin_if_table_blank?).to eq @super_admin.id
end
end
end
describe "#check_role_users" do
it "must create record in table role_users if role_users with current user id and role id not exist" do
user = create(:user, :valid_email)
user.check_role_users
expect(user.role_users).not_to be_empty
end
end
describe "#create_default_emails" do
it "default email is exists" do
user = create(:user, :valid_email)
expect(user.emails.exists?).to eql true
end
it "status is primary" do
user = create(:user, :valid_email)
expect(user.emails.first.status).to eql "primary"
end
end
end # end describe User
end
# end model test
# start controller test
require 'spec_helper'
module Mesin
describe Admin::AccountsController, type: :controller do
set_engine_routes
login_super_admin
describe "GET #index" do
context "when user success login" do
it "has current_user" do
expect(subject.current_user).not_to be_nil
end
it "renders view :index" do
get :index
expect(response).to render_template :index
end
end
end # describe "GET #index"
describe "PUT #:id/update_profile" do
context "with valid data" do
it "success update profile user" do
params = {profile_attributes: {username: "opan berhasil"}}
put :update_profile, id: subject.current_user.id, account: params, format: :js
compare_name = "opan berhasil"
# expect(response).to render_template "update_profile.js.coffee"
expect(subject.current_user.profile.username).to eql "opan berhasil"
end
it "render update_profile.js.coffee" do
params = {profile_attributes: {username: "opan berhasil"}}
put :update_profile, id: subject.current_user.id, account: params, format: :js
expect(response).to render_template "update_profile"
end
end
context "with invalid data" do
it "fails update profile user" do
params = {profile_attributes: {username: nil}}
put :update_profile, id: subject.current_user.id, account: params, format: :js
subject.current_user.reload
expect(subject.current_user.profile.username).not_to eql nil
end
it "render update_profile.js.coffee" do
params = {profile_attributes: {username: nil}}
put :update_profile, id: subject.current_user.id, account: params, format: :js
expect(response).to render_template "update_profile"
end
end
end # describe "PUT #update_profile"
end
end
# end controller test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment