diff options
author | jessib <jessib@riseup.net> | 2012-11-14 14:27:15 -0800 |
---|---|---|
committer | jessib <jessib@riseup.net> | 2012-11-14 14:27:15 -0800 |
commit | db758bcc770cf4e58937108fe18eefc447d09b42 (patch) | |
tree | 4c35db94fa671b9c667f01514dac9801129b3698 /help | |
parent | e0bfe1981be07f2ab27131c52a20b15e6562822d (diff) |
Improvements to functional ticket tests.
Diffstat (limited to 'help')
-rw-r--r-- | help/app/controllers/tickets_controller.rb | 4 | ||||
-rw-r--r-- | help/test/functional/tickets_controller_test.rb | 79 |
2 files changed, 61 insertions, 22 deletions
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb index 102464a..2dc4c4c 100644 --- a/help/app/controllers/tickets_controller.rb +++ b/help/app/controllers/tickets_controller.rb @@ -12,7 +12,7 @@ class TicketsController < ApplicationController def create @ticket = Ticket.new(params[:ticket]) - if current_user + if logged_in? @ticket.created_by = current_user.id @ticket.email = current_user.email if current_user.email @ticket.comments.last.posted_by = current_user.id @@ -48,7 +48,7 @@ class TicketsController < ApplicationController def update @ticket = Ticket.find(params[:id]) - + if !ticket_access_denied? if status = params[:change_status] #close or open button was pressed @ticket.close if params[:change_status] == 'close' diff --git a/help/test/functional/tickets_controller_test.rb b/help/test/functional/tickets_controller_test.rb index 2f9045a..56d81d7 100644 --- a/help/test/functional/tickets_controller_test.rb +++ b/help/test/functional/tickets_controller_test.rb @@ -16,41 +16,40 @@ class TicketsControllerTest < ActionController::TestCase end test "should create unauthenticated ticket" do - params = {:title => "ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} + params = {:title => "unauth ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} assert_difference('Ticket.count') do post :create, :ticket => params end assert_response :redirect - #assert_equal assigns(:ticket).email, User.current.email - #assert_equal User.find(assigns(:ticket).created_by).login, User.current.login assert_nil assigns(:ticket).created_by assert_equal 1, assigns(:ticket).comments.count + assert_nil assigns(:ticket).comments.first.posted_by assigns(:ticket).destroy # destroys without checking permission. is that okay? end - test "should create authenticated ticket" do - params = {:title => "ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} + params = {:title => "auth ticket test title", :comments_attributes => {"0" => {"body" =>"body of test ticket"}}} login User.last - assert_difference('Ticket.count') do post :create, :ticket => params end assert_response :redirect - ticket = assigns(:ticket) - assert ticket - assert_equal @current_user.id, ticket.created_by - assert_equal @current_user.email, ticket.email + assert_not_nil assigns(:ticket).created_by + assert_equal assigns(:ticket).created_by, @current_user.id + assert_equal assigns(:ticket).email, @current_user.email + assert_equal 1, assigns(:ticket).comments.count - assigns(:ticket).destroy # ? + assert_not_nil assigns(:ticket).comments.first.posted_by + assert_equal assigns(:ticket).comments.first.posted_by, @current_user.id + assigns(:ticket).destroy end test "add comment to unauthenticated ticket" do @@ -62,6 +61,7 @@ class TicketsControllerTest < ActionController::TestCase :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } end + assert_equal ticket, assigns(:ticket) # still same ticket, with different comments assert_not_equal ticket.comments, assigns(:ticket).comments # ticket == assigns(:ticket), but they have different comments (which we want) end @@ -70,7 +70,6 @@ class TicketsControllerTest < ActionController::TestCase test "add comment to own authenticated ticket" do login(User.last) - ticket = Ticket.last ticket.created_by = User.last.id # TODO: hacky, but confirms it is their ticket ticket.save @@ -80,6 +79,8 @@ class TicketsControllerTest < ActionController::TestCase :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } end assert_not_equal ticket.comments, assigns(:ticket).comments + assert_not_nil assigns(:ticket).comments.last.posted_by + assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id end @@ -91,7 +92,8 @@ class TicketsControllerTest < ActionController::TestCase ticket = Ticket.last - ticket.created_by = User.first.id #assumes User.first != User.last + assert_not_nil User.first.id + ticket.created_by = User.first.id #assumes User.first != User.last: assert_not_equal User.first, User.last ticket.save # they should *not* be able to comment if it is not their ticket @@ -107,13 +109,12 @@ class TicketsControllerTest < ActionController::TestCase test "admin add comment to authenticated ticket" do admin_login = APP_CONFIG['admins'].first - attribs = User.valid_attributes_hash - attribs[:login] = admin_login - admin_user = User.new(attribs) - login(admin_user) + admin_user = User.find_by_login(admin_login) #assumes that there is an admin login + login(admin_user) ticket = Ticket.last - ticket.created_by = User.last.id # TODO: hacky, but confirms it somebody elses ticket + assert_not_nil User.last.id + ticket.created_by = User.last.id # TODO: hacky, but confirms it somebody elses ticket. assumes last user is not admin user: assert_not_equal User.last, admin_user ticket.save @@ -123,13 +124,51 @@ class TicketsControllerTest < ActionController::TestCase :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}} } end assert_not_equal ticket.comments, assigns(:ticket).comments + assert_not_nil assigns(:ticket).comments.last.posted_by + assert_equal assigns(:ticket).comments.last.posted_by, @current_user.id end - test "test_tickets_by_admin" do - #TODO + + admin_login = APP_CONFIG['admins'].first + admin_user = User.find_by_login(admin_login) #assumes that there is an admin login + login(admin_user) + + post :create, :ticket => {:title => "test tick", :comments_attributes => {"0" => {"body" =>"body of test tick"}}} + post :create, :ticket => {:title => "another test tick", :comments_attributes => {"0" => {"body" =>"body of another test tick"}}} + + assert_not_nil assigns(:ticket).created_by + assert_equal assigns(:ticket).created_by, admin_user.id + + get :index, {:status => "open tickets I admin"} + assert assigns(:tickets).count > 1 # at least 2 tickets + + # if we close one ticket, the admin should have 1 less open ticket they admin + assert_difference('assigns[:tickets].count', -1) do + assigns(:ticket).close + assigns(:ticket).save + get :index, {:status => "open tickets I admin"} + end + assigns(:ticket).destroy + + testticket = Ticket.create :title => 'testytest' + assert !assigns(:tickets).include?(testticket) + + # admin should have one more ticket if a new tick gets an admin comment + assert_difference('assigns[:tickets].count') do + put :update, :id => testticket.id, :ticket => {:comments_attributes => {"0" => {"body" =>"NEWER comment"}}} + get :index, {:status => "open tickets I admin"} + end + + assert assigns(:tickets).include?(assigns(:ticket)) + assert_not_nil assigns(:ticket).comments.last.posted_by + assert_equal assigns(:ticket).comments.last.posted_by, admin_user.id + + assigns(:ticket).destroy + end + end |