Created
January 18, 2016 14:13
-
-
Save opan/d3674a49d8fdf8de541e to your computer and use it in GitHub Desktop.
rspec test model and controller examples. Opan Mustopah
This file contains 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
# 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