Skip to content

Instantly share code, notes, and snippets.

@ridiculous
Last active November 21, 2015 22:39
Show Gist options
  • Save ridiculous/ca554bcd029d0649a17b to your computer and use it in GitHub Desktop.
Save ridiculous/ca554bcd029d0649a17b to your computer and use it in GitHub Desktop.
#
# 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