Last active
November 21, 2015 22:39
-
-
Save ridiculous/ca554bcd029d0649a17b 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
# | |
# AUTOMATICALLY GENERATED SPEC | |
# | |
require "spec_helper" | |
describe UsersController do | |
subject { described_class.new } | |
describe "#index" do | |
end | |
describe "#edit" do | |
end | |
describe "#update" do | |
context "when @user.save" do | |
before {} | |
end | |
context "unless @user.save" do | |
before {} | |
end | |
end | |
describe "#new" do | |
end | |
describe "#create" do | |
context "when user_params[:password].blank? and user_params[:password_confirmation].blank?" do | |
before {} | |
end | |
context "unless user_params[:password].blank? and user_params[:password_confirmation].blank?" do | |
before {} | |
end | |
context "when @user.save" do | |
before {} | |
context "when @customer.email.blank?" do | |
before {} | |
it "@customer.update_attribute(:email, @user.email)" do | |
end | |
end | |
context "unless @customer.email.blank?" do | |
before {} | |
end | |
end | |
context "unless @user.save" do | |
before {} | |
end | |
end | |
describe "#destroy" do | |
context "when @user.destroy" do | |
before {} | |
context "when @user.customer" do | |
before {} | |
end | |
context "unless @user.customer" do | |
before {} | |
end | |
end | |
context "unless @user.destroy" do | |
before {} | |
end | |
end | |
end | |
# | |
# BASED ON THIS CODE | |
# | |
# app/controllers/users_controller.rb | |
class UsersController < ApplicationController | |
before_filter :set_user, only: [:edit, :update] | |
def index | |
authorize! :create, User | |
@users = User.order(:email) | |
end | |
def edit | |
@customer = @user.customer | |
end | |
def update | |
authorize! :update, @user | |
user_params = params.require(:user).permit! | |
@customer = @user.customer | |
@user.email = user_params[:email] | |
@user.password = user_params[:password] | |
@user.password_confirmation = user_params[:password_confirmation] | |
if @user.save | |
redirect_to(edit_user_path(@user), notice: 'Email and password updated') | |
else | |
render(:edit) | |
end | |
end | |
def new | |
@customer = Customer.find_by_id(params[:customer_id]) | |
@user = User.new(email: @customer.email, customer_id: @customer.id) | |
authorize! :new, @user | |
end | |
# should always has a customer | |
def create | |
authorize! :create, User | |
user_params = params.require(:user).permit! | |
# generate temp password if none provided | |
if user_params[:password].blank? && user_params[:password_confirmation].blank? | |
user_params[:password] = user_params[:password_confirmation] = SecureRandom.urlsafe_base64.slice(0, 8) | |
end | |
@user = User.new(user_params) | |
@customer = @user.customer | |
if @user.save | |
if @customer.email.blank? | |
@customer.update_attribute(:email, @user.email) | |
end | |
# UserMailer.account_created(@user.id, user_params[:password]).deliver | |
redirect_to(customer_path(@customer), notice: 'User account created with read-only privileges') | |
else | |
render(:edit) | |
end | |
end | |
def destroy | |
authorize! :destroy, User | |
@user = User.find(params[:id]) | |
if @user.destroy | |
msg = "User account for #{@user.email} has been deleted" | |
if @user.customer | |
redirect_to(customer_path(@user.customer), notice: msg) | |
else | |
redirect_to(users_path, notice: msg) | |
end | |
else | |
render(:edit) | |
end | |
end | |
private | |
def set_user | |
@user = if current_user.luna? | |
User.find(params[:id]) | |
else | |
current_user | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment