chris@37
|
1 # -*- coding: utf-8 -*-
|
chris@37
|
2 require File.dirname(__FILE__) + '/../test_helper'
|
chris@37
|
3
|
chris@37
|
4 class TimeEntryReportsControllerTest < ActionController::TestCase
|
chris@37
|
5 fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values
|
chris@37
|
6
|
chris@37
|
7 def test_report_no_criteria
|
chris@37
|
8 get :report, :project_id => 1
|
chris@37
|
9 assert_response :success
|
chris@37
|
10 assert_template 'report'
|
chris@37
|
11 end
|
chris@37
|
12
|
chris@37
|
13 def test_report_all_projects
|
chris@37
|
14 get :report
|
chris@37
|
15 assert_response :success
|
chris@37
|
16 assert_template 'report'
|
chris@37
|
17 end
|
chris@37
|
18
|
chris@37
|
19 def test_report_all_projects_denied
|
chris@37
|
20 r = Role.anonymous
|
chris@37
|
21 r.permissions.delete(:view_time_entries)
|
chris@37
|
22 r.permissions_will_change!
|
chris@37
|
23 r.save
|
chris@37
|
24 get :report
|
chris@37
|
25 assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Ftime_entries%2Freport'
|
chris@37
|
26 end
|
chris@37
|
27
|
chris@37
|
28 def test_report_all_projects_one_criteria
|
chris@37
|
29 get :report, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criterias => ['project']
|
chris@37
|
30 assert_response :success
|
chris@37
|
31 assert_template 'report'
|
chris@37
|
32 assert_not_nil assigns(:total_hours)
|
chris@37
|
33 assert_equal "8.65", "%.2f" % assigns(:total_hours)
|
chris@37
|
34 end
|
chris@37
|
35
|
chris@37
|
36 def test_report_all_time
|
chris@37
|
37 get :report, :project_id => 1, :criterias => ['project', 'issue']
|
chris@37
|
38 assert_response :success
|
chris@37
|
39 assert_template 'report'
|
chris@37
|
40 assert_not_nil assigns(:total_hours)
|
chris@37
|
41 assert_equal "162.90", "%.2f" % assigns(:total_hours)
|
chris@37
|
42 end
|
chris@37
|
43
|
chris@37
|
44 def test_report_all_time_by_day
|
chris@37
|
45 get :report, :project_id => 1, :criterias => ['project', 'issue'], :columns => 'day'
|
chris@37
|
46 assert_response :success
|
chris@37
|
47 assert_template 'report'
|
chris@37
|
48 assert_not_nil assigns(:total_hours)
|
chris@37
|
49 assert_equal "162.90", "%.2f" % assigns(:total_hours)
|
chris@37
|
50 assert_tag :tag => 'th', :content => '2007-03-12'
|
chris@37
|
51 end
|
chris@37
|
52
|
chris@37
|
53 def test_report_one_criteria
|
chris@37
|
54 get :report, :project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criterias => ['project']
|
chris@37
|
55 assert_response :success
|
chris@37
|
56 assert_template 'report'
|
chris@37
|
57 assert_not_nil assigns(:total_hours)
|
chris@37
|
58 assert_equal "8.65", "%.2f" % assigns(:total_hours)
|
chris@37
|
59 end
|
chris@37
|
60
|
chris@37
|
61 def test_report_two_criterias
|
chris@37
|
62 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criterias => ["member", "activity"]
|
chris@37
|
63 assert_response :success
|
chris@37
|
64 assert_template 'report'
|
chris@37
|
65 assert_not_nil assigns(:total_hours)
|
chris@37
|
66 assert_equal "162.90", "%.2f" % assigns(:total_hours)
|
chris@37
|
67 end
|
chris@37
|
68
|
chris@37
|
69 def test_report_one_day
|
chris@37
|
70 get :report, :project_id => 1, :columns => 'day', :from => "2007-03-23", :to => "2007-03-23", :criterias => ["member", "activity"]
|
chris@37
|
71 assert_response :success
|
chris@37
|
72 assert_template 'report'
|
chris@37
|
73 assert_not_nil assigns(:total_hours)
|
chris@37
|
74 assert_equal "4.25", "%.2f" % assigns(:total_hours)
|
chris@37
|
75 end
|
chris@37
|
76
|
chris@37
|
77 def test_report_at_issue_level
|
chris@37
|
78 get :report, :project_id => 1, :issue_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criterias => ["member", "activity"]
|
chris@37
|
79 assert_response :success
|
chris@37
|
80 assert_template 'report'
|
chris@37
|
81 assert_not_nil assigns(:total_hours)
|
chris@37
|
82 assert_equal "154.25", "%.2f" % assigns(:total_hours)
|
chris@37
|
83 end
|
chris@37
|
84
|
chris@37
|
85 def test_report_custom_field_criteria
|
chris@37
|
86 get :report, :project_id => 1, :criterias => ['project', 'cf_1', 'cf_7']
|
chris@37
|
87 assert_response :success
|
chris@37
|
88 assert_template 'report'
|
chris@37
|
89 assert_not_nil assigns(:total_hours)
|
chris@37
|
90 assert_not_nil assigns(:criterias)
|
chris@37
|
91 assert_equal 3, assigns(:criterias).size
|
chris@37
|
92 assert_equal "162.90", "%.2f" % assigns(:total_hours)
|
chris@37
|
93 # Custom field column
|
chris@37
|
94 assert_tag :tag => 'th', :content => 'Database'
|
chris@37
|
95 # Custom field row
|
chris@37
|
96 assert_tag :tag => 'td', :content => 'MySQL',
|
chris@37
|
97 :sibling => { :tag => 'td', :attributes => { :class => 'hours' },
|
chris@37
|
98 :child => { :tag => 'span', :attributes => { :class => 'hours hours-int' },
|
chris@37
|
99 :content => '1' }}
|
chris@37
|
100 # Second custom field column
|
chris@37
|
101 assert_tag :tag => 'th', :content => 'Billable'
|
chris@37
|
102 end
|
chris@37
|
103
|
chris@37
|
104 def test_report_one_criteria_no_result
|
chris@37
|
105 get :report, :project_id => 1, :columns => 'week', :from => "1998-04-01", :to => "1998-04-30", :criterias => ['project']
|
chris@37
|
106 assert_response :success
|
chris@37
|
107 assert_template 'report'
|
chris@37
|
108 assert_not_nil assigns(:total_hours)
|
chris@37
|
109 assert_equal "0.00", "%.2f" % assigns(:total_hours)
|
chris@37
|
110 end
|
chris@37
|
111
|
chris@37
|
112 def test_report_all_projects_csv_export
|
chris@37
|
113 get :report, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30", :criterias => ["project", "member", "activity"], :format => "csv"
|
chris@37
|
114 assert_response :success
|
chris@37
|
115 assert_equal 'text/csv', @response.content_type
|
chris@37
|
116 lines = @response.body.chomp.split("\n")
|
chris@37
|
117 # Headers
|
chris@37
|
118 assert_equal 'Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total', lines.first
|
chris@37
|
119 # Total row
|
chris@37
|
120 assert_equal 'Total,"","","","",154.25,8.65,"","",162.90', lines.last
|
chris@37
|
121 end
|
chris@37
|
122
|
chris@37
|
123 def test_report_csv_export
|
chris@37
|
124 get :report, :project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-06-30", :criterias => ["project", "member", "activity"], :format => "csv"
|
chris@37
|
125 assert_response :success
|
chris@37
|
126 assert_equal 'text/csv', @response.content_type
|
chris@37
|
127 lines = @response.body.chomp.split("\n")
|
chris@37
|
128 # Headers
|
chris@37
|
129 assert_equal 'Project,Member,Activity,2007-1,2007-2,2007-3,2007-4,2007-5,2007-6,Total', lines.first
|
chris@37
|
130 # Total row
|
chris@37
|
131 assert_equal 'Total,"","","","",154.25,8.65,"","",162.90', lines.last
|
chris@37
|
132 end
|
chris@37
|
133
|
chris@37
|
134 end
|