Skip to content

Instantly share code, notes, and snippets.

@dhh
Created March 3, 2014 20:17
Show Gist options
  • Star 39 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dhh/9333694 to your computer and use it in GitHub Desktop.
Save dhh/9333694 to your computer and use it in GitHub Desktop.
class GroupersController < ApplicationController::Base
def create
@grouper = Grouper.new(leader: current_member)
if @grouper.save
confirm_grouper_via_emails(@grouper)
enqueue_bar_assignment(@grouper)
redirect_to home_path
else
# No reason to use the flash, that's only for cross-request persistence
render :new
end
end
private
def confirm_grouper_via_emails(grouper)
LeaderMailer.grouper_confirmed(member: grouper.leader.id).deliver
WingMailer.grouper_confirmed(wings: grouper.wings.pluck(:id)).deliver
AdminMailer.grouper_confirmed(grouper: grouper.admin.id).deliver
end
def enqueue_bar_assignment(grouper)
AssignBarForGrouper.enqueue(grouper.id)
end
end
class GroupersControllerTest < ActiveSupport::TestCase
def setup
sign_in :david # fixture name reference for current_member
end
test "successfully created a grouper" do
assert_emails 3 do
post :create
end
assert_response :redirect
Grouper.last.tap do |new_grouper|
assert_equal members(:david), new_grouper.leader
assert_equal new_grouper, SomeQueue.last.grouper
end
end
test "failed to create a grouper" do
assert_emails 0 do
post :create
end
assert_response :ok
end
end
@micahlmartin
Copy link

@JoshCheek 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment