##// END OF EJS Templates
Show the project hierarchy in the drop down list for new membership on user administration screen....
Show the project hierarchy in the drop down list for new membership on user administration screen. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1401 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1325:a3c89d4f697e
r1386:7f8d959171c5
Show More
timelog_controller_test.rb
208 lines | 7.9 KiB | text/x-ruby | RubyLexer
/ test / functional / timelog_controller_test.rb
Jean-Philippe Lang
Added time report....
r569 # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.dirname(__FILE__) + '/../test_helper'
require 'timelog_controller'
# Re-raise errors caught by the controller.
class TimelogController; def rescue_action(e) raise e end; end
class TimelogControllerTest < Test::Unit::TestCase
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 fixtures :projects, :enabled_modules, :roles, :members, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values
Jean-Philippe Lang
Added time report....
r569
def setup
@controller = TimelogController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
Jean-Philippe Lang
Adds 2 permissions (closes #859):...
r1235
def test_create
@request.session[:user_id] = 3
post :edit, :project_id => 1,
:time_entry => {:comments => 'Some work on TimelogControllerTest',
:activity_id => '10',
:spent_on => '2008-03-14',
:issue_id => '1',
:hours => '7.3'}
assert_redirected_to 'projects/ecookbook/timelog/details'
i = Issue.find(1)
t = TimeEntry.find_by_comments('Some work on TimelogControllerTest')
assert_not_nil t
assert_equal 7.3, t.hours
assert_equal 3, t.user_id
assert_equal i, t.issue
assert_equal i.project, t.project
end
def test_update
entry = TimeEntry.find(1)
assert_equal 1, entry.issue_id
assert_equal 2, entry.user_id
@request.session[:user_id] = 1
post :edit, :id => 1,
:time_entry => {:issue_id => '2',
:hours => '8'}
assert_redirected_to 'projects/ecookbook/timelog/details'
entry.reload
assert_equal 8, entry.hours
assert_equal 2, entry.issue_id
assert_equal 2, entry.user_id
end
def destroy
@request.session[:user_id] = 2
post :destroy, :id => 1
assert_redirected_to 'projects/ecookbook/timelog/details'
assert_nil TimeEntry.find_by_id(1)
end
Jean-Philippe Lang
Added time report....
r569
def test_report_no_criteria
get :report, :project_id => 1
assert_response :success
assert_template 'report'
end
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303
def test_report_all_time
Jean-Philippe Lang
Time report can be done at issue level (closes #970) + timelog views xhtml validation....
r1304 get :report, :project_id => 1, :criterias => ['project', 'issue']
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303 assert_response :success
assert_template 'report'
assert_not_nil assigns(:total_hours)
assert_equal "162.90", "%.2f" % assigns(:total_hours)
end
Jean-Philippe Lang
Various timelog report enhancements:...
r1311
def test_report_all_time_by_day
get :report, :project_id => 1, :criterias => ['project', 'issue'], :columns => 'day'
assert_response :success
assert_template 'report'
assert_not_nil assigns(:total_hours)
assert_equal "162.90", "%.2f" % assigns(:total_hours)
assert_tag :tag => 'th', :content => '2007-03-12'
end
Jean-Philippe Lang
Added time report....
r569 def test_report_one_criteria
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303 get :report, :project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criterias => ['project']
Jean-Philippe Lang
Added time report....
r569 assert_response :success
assert_template 'report'
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_not_nil assigns(:total_hours)
assert_equal "8.65", "%.2f" % assigns(:total_hours)
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303 end
Jean-Philippe Lang
Added time report....
r569
def test_report_two_criterias
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criterias => ["member", "activity"]
Jean-Philippe Lang
Added time report....
r569 assert_response :success
assert_template 'report'
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_not_nil assigns(:total_hours)
assert_equal "162.90", "%.2f" % assigns(:total_hours)
Jean-Philippe Lang
Added time report....
r569 end
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 def test_report_custom_field_criteria
get :report, :project_id => 1, :criterias => ['project', 'cf_1']
assert_response :success
assert_template 'report'
assert_not_nil assigns(:total_hours)
assert_not_nil assigns(:criterias)
assert_equal 2, assigns(:criterias).size
assert_equal "162.90", "%.2f" % assigns(:total_hours)
# Custom field column
assert_tag :tag => 'th', :content => 'Database'
# Custom field row
assert_tag :tag => 'td', :content => 'MySQL',
:sibling => { :tag => 'td', :attributes => { :class => 'hours' },
:child => { :tag => 'span', :attributes => { :class => 'hours hours-int' },
:content => '1' }}
end
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 def test_report_one_criteria_no_result
Jean-Philippe Lang
Add predefined date ranges to the time report in the same way as the details view (closes #972). It nows defaults to 'All time'....
r1303 get :report, :project_id => 1, :columns => 'week', :from => "1998-04-01", :to => "1998-04-30", :criterias => ['project']
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_response :success
assert_template 'report'
assert_not_nil assigns(:total_hours)
assert_equal "0.00", "%.2f" % assigns(:total_hours)
Jean-Philippe Lang
CSV export added to timelog report (#1009)....
r1323 end
def test_report_csv_export
get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30", :criterias => ["project", "member", "activity"], :format => "csv"
assert_response :success
assert_equal 'text/csv', @response.content_type
lines = @response.body.chomp.split("\n")
# Headers
assert_equal 'Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total', lines.first
# Total row
assert_equal 'Total,"","","","",154.25,8.65,"","",162.90', lines.last
end
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 def test_details_at_project_level
get :details, :project_id => 1
assert_response :success
assert_template 'details'
assert_not_nil assigns(:entries)
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_equal 4, assigns(:entries).size
# project and subproject
assert_equal [1, 3], assigns(:entries).collect(&:project_id).uniq.sort
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 assert_not_nil assigns(:total_hours)
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_equal "162.90", "%.2f" % assigns(:total_hours)
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 # display all time by default
Jean-Philippe Lang
Various timelog report enhancements:...
r1311 assert_equal '2007-03-11'.to_date, assigns(:from)
assert_equal '2007-04-22'.to_date, assigns(:to)
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 end
def test_details_at_project_level_with_date_range
get :details, :project_id => 1, :from => '2007-03-20', :to => '2007-04-30'
assert_response :success
assert_template 'details'
assert_not_nil assigns(:entries)
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_equal 3, assigns(:entries).size
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 assert_not_nil assigns(:total_hours)
Jean-Philippe Lang
Propagates time tracking to the parent project (closes #433). Time report enhancements....
r1162 assert_equal "12.90", "%.2f" % assigns(:total_hours)
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 assert_equal '2007-03-20'.to_date, assigns(:from)
assert_equal '2007-04-30'.to_date, assigns(:to)
end
def test_details_at_project_level_with_period
get :details, :project_id => 1, :period => '7_days'
assert_response :success
assert_template 'details'
assert_not_nil assigns(:entries)
assert_not_nil assigns(:total_hours)
assert_equal Date.today - 7, assigns(:from)
assert_equal Date.today, assigns(:to)
end
def test_details_at_issue_level
get :details, :issue_id => 1
assert_response :success
assert_template 'details'
assert_not_nil assigns(:entries)
assert_equal 2, assigns(:entries).size
assert_not_nil assigns(:total_hours)
assert_equal 154.25, assigns(:total_hours)
# display all time by default
Jean-Philippe Lang
Various timelog report enhancements:...
r1311 assert_equal '2007-03-11'.to_date, assigns(:from)
assert_equal '2007-04-22'.to_date, assigns(:to)
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 end
Jean-Philippe Lang
Add NewsController and TimelogController tests....
r1255
def test_details_csv_export
get :details, :project_id => 1, :format => 'csv'
assert_response :success
assert_equal 'text/csv', @response.content_type
assert @response.body.include?("Date,User,Activity,Project,Issue,Tracker,Subject,Hours,Comment\n")
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 assert @response.body.include?("\n04/21/2007,redMine Admin,Design,eCookbook,3,Bug,Error 281 when updating a recipe,1.0,\"\"\n")
Jean-Philippe Lang
Add NewsController and TimelogController tests....
r1255 end
Jean-Philippe Lang
Added time report....
r569 end