Project

General

Profile

Feature #36391 ยป 36391.patch

Go MAEDA, 2022-01-07 06:46

View differences:

config/settings.yml
170 170
time_format:
171 171
  default: ''
172 172
timespan_format:
173
  default: 'decimal'
173
  default: 'minutes'
174 174
user_format:
175 175
  default: :firstname_lastname
176 176
  format: symbol
test/functional/issues_controller_test.rb
1322 1322
      }
1323 1323
    )
1324 1324
    assert_response :success
1325
    assert_equal ['4.00', '3.00', '0.00'], columns_values_in_list('spent_hours')[0..2]
1325
    assert_equal ['4:00', '3:00', '0:00'], columns_values_in_list('spent_hours').first(3)
1326 1326
    Project.find(3).disable_module!(:time_tracking)
1327 1327
    get(
1328 1328
      :index,
......
1332 1332
      }
1333 1333
    )
1334 1334
    assert_response :success
1335
    assert_equal ['3.00', '0.00', '0.00'], columns_values_in_list('spent_hours')[0..2]
1335
    assert_equal ['3:00', '0:00', '0:00'], columns_values_in_list('spent_hours').first(3)
1336 1336
  end
1337 1337

  
1338 1338
  def test_index_sort_by_total_spent_hours
......
1555 1555
        :c => %w(subject spent_hours)
1556 1556
      }
1557 1557
    )
1558
    assert_select 'table.issues tr#issue-3 td.spent_hours', :text => '1.00'
1558
    assert_select 'table.issues tr#issue-3 td.spent_hours', :text => '1:00'
1559 1559
  end
1560 1560

  
1561 1561
  def test_index_with_total_spent_hours_column
......
1567 1567
        :c => %w(subject total_spent_hours)
1568 1568
      }
1569 1569
    )
1570
    assert_select 'table.issues tr#issue-3 td.total_spent_hours', :text => '1.00'
1570
    assert_select 'table.issues tr#issue-3 td.total_spent_hours', :text => '1:00'
1571 1571
  end
1572 1572

  
1573 1573
  def test_index_with_total_estimated_hours_column
......
1874 1874

  
1875 1875
  def test_index_with_estimated_hours_total
1876 1876
    Issue.delete_all
1877
    Issue.generate!(:estimated_hours => 5.5)
1878
    Issue.generate!(:estimated_hours => 1.1)
1877
    Issue.generate!(:estimated_hours => '5:30')
1878
    Issue.generate!(:estimated_hours => '1:06')
1879 1879
    get(:index, :params => {:t => %w(estimated_hours)})
1880 1880
    assert_response :success
1881 1881
    assert_select '.query-totals'
1882
    assert_select '.total-for-estimated-hours span.value', :text => '6.60'
1882
    assert_select '.total-for-estimated-hours span.value', :text => '6:36'
1883 1883
    assert_select 'input[type=checkbox][name=?][value=estimated_hours][checked=checked]', 't[]'
1884 1884
  end
1885 1885

  
1886 1886
  def test_index_with_grouped_query_and_estimated_hours_total
1887 1887
    Issue.delete_all
1888
    Issue.generate!(:estimated_hours => 5.5, :category_id => 1)
1889
    Issue.generate!(:estimated_hours => 2.3, :category_id => 1)
1890
    Issue.generate!(:estimated_hours => 1.1, :category_id => 2)
1891
    Issue.generate!(:estimated_hours => 4.6)
1888
    Issue.generate!(:estimated_hours => '5:30', :category_id => 1)
1889
    Issue.generate!(:estimated_hours => '2:18', :category_id => 1)
1890
    Issue.generate!(:estimated_hours => '1:06', :category_id => 2)
1891
    Issue.generate!(:estimated_hours => '4:36')
1892 1892
    get(
1893 1893
      :index,
1894 1894
      :params => {
......
1898 1898
    )
1899 1899
    assert_response :success
1900 1900
    assert_select '.query-totals'
1901
    assert_select '.query-totals .total-for-estimated-hours span.value', :text => '13.50'
1901
    assert_select '.query-totals .total-for-estimated-hours span.value', :text => '13:30'
1902 1902
    assert_select 'tr.group', :text => /Printing/ do
1903
      assert_select '.total-for-estimated-hours span.value', :text => '7.80'
1903
      assert_select '.total-for-estimated-hours span.value', :text => '7:48'
1904 1904
    end
1905 1905
    assert_select 'tr.group', :text => /Recipes/ do
1906
      assert_select '.total-for-estimated-hours span.value', :text => '1.10'
1906
      assert_select '.total-for-estimated-hours span.value', :text => '1:06'
1907 1907
    end
1908 1908
    assert_select 'tr.group', :text => /blank/ do
1909
      assert_select '.total-for-estimated-hours span.value', :text => '4.60'
1909
      assert_select '.total-for-estimated-hours span.value', :text => '4:36'
1910 1910
    end
1911 1911
  end
1912 1912

  
......
1927 1927

  
1928 1928
    get :index, :params => {:t => ["spent_hours"]}
1929 1929
    assert_response :success
1930
    assert_select ".total-for-spent-hours span.value", :text => '7.00'
1930
    assert_select ".total-for-spent-hours span.value", :text => '7:00'
1931 1931

  
1932 1932
    Project.find(3).disable_module!(:time_tracking)
1933 1933

  
1934 1934
    get :index, :params => {:t => ["spent_hours"]}
1935 1935
    assert_response :success
1936
    assert_select ".total-for-spent-hours span.value", :text => '3.00'
1936
    assert_select ".total-for-spent-hours span.value", :text => '3:00'
1937 1937
  end
1938 1938

  
1939 1939
  def test_index_totals_should_default_to_settings
......
5652 5652
          :priority_id => 7
5653 5653
        },
5654 5654
        :time_entry => {
5655
          :hours => '2.5',
5655
          :hours => '2:30',
5656 5656
          :comments => 'test_get_edit_with_params',
5657 5657
          :activity_id => 10
5658 5658
        }
......
5668 5668
      assert_select 'option[value="7"][selected=selected]', :text => 'Urgent'
5669 5669
    end
5670 5670

  
5671
    assert_select 'input[name=?][value="2.50"]', 'time_entry[hours]'
5671
    assert_select 'input[name=?][value="2:30"]', 'time_entry[hours]'
5672 5672
    assert_select 'select[name=?]', 'time_entry[activity_id]' do
5673 5673
      assert_select 'option[value="10"][selected=selected]', :text => 'Development'
5674 5674
    end
test/functional/issues_controller_transaction_test.rb
341 341
            :subject => ''
342 342
          },
343 343
          :time_entry => {
344
            :hours => '2.5',
344
            :hours => '2:30',
345 345
            :comments => 'should not be added',
346 346
            :activity_id => TimeEntryActivity.first.id
347 347
          }
......
350 350
      assert_response :success
351 351
    end
352 352

  
353
    assert_select 'input[name=?][value=?]', 'time_entry[hours]', '2.50'
353
    assert_select 'input[name=?][value=?]', 'time_entry[hours]', '2:30'
354 354
    assert_select 'input[name=?][value=?]', 'time_entry[comments]', 'should not be added'
355 355
    assert_select 'select[name=?]', 'time_entry[activity_id]' do
356 356
      assert_select 'option[value=?][selected=selected]', TimeEntryActivity.first.id.to_s
test/functional/my_controller_test.rb
60 60
    assert_response :success
61 61
    assert_select "tr#time-entry-#{with_issue.id}" do
62 62
      assert_select 'td.subject a[href="/issues/1"]'
63
      assert_select 'td.hours', :text => '2.50'
63
      assert_select 'td.hours', :text => '2:30'
64 64
    end
65 65
    assert_select "tr#time-entry-#{without_issue.id}" do
66
      assert_select 'td.hours', :text => '3.50'
66
      assert_select 'td.hours', :text => '3:30'
67 67
    end
68 68
  end
69 69

  
test/functional/projects_controller_test.rb
796 796
    @request.session[:user_id] = 1
797 797
    get(:show, :params => {:id => 'ecookbook'})
798 798
    assert_select 'div.spent_time.box>ul' do
799
      assert_select '>li:nth-child(1)', :text => 'Estimated time: 203.50 hours'
800
      assert_select '>li:nth-child(2)', :text => 'Spent time: 162.90 hours'
799
      assert_select '>li:nth-child(1)', :text => 'Estimated time: 203:30 hours'
800
      assert_select '>li:nth-child(2)', :text => 'Spent time: 162:54 hours'
801 801
    end
802 802
  end
803 803

  
test/functional/timelog_controller_test.rb
929 929
    get :index
930 930
    assert_response :success
931 931

  
932
    assert_select '.total-for-hours', :text => 'Hours: 162.90'
932
    assert_select '.total-for-hours', :text => 'Hours: 162:54'
933 933
    assert_select 'form#query_form[action=?]', '/time_entries'
934 934

  
935 935
    assert_equal ['Project', 'Date', 'User', 'Activity', 'Issue', 'Comment', 'Hours'], columns_in_list
......
1008 1008
    projects = css_select('table.time-entries tbody td.project').map(&:text).uniq.sort
1009 1009
    assert_equal ["eCookbook", "eCookbook Subproject 1"], projects
1010 1010

  
1011
    assert_select '.total-for-hours', :text => 'Hours: 162.90'
1011
    assert_select '.total-for-hours', :text => 'Hours: 162:54'
1012 1012
    assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
1013 1013

  
1014 1014
    # 'Log time' shoudl link to log time on the filtered issue
......
1046 1046
    @request.session[:user_id] = 2
1047 1047

  
1048 1048
    get :index, :params => {:project_id => 'ecookbook', :issue_id => issue.id.to_s, :set_filter => 1}
1049
    assert_select '.total-for-hours', :text => 'Hours: 7.00'
1049
    assert_select '.total-for-hours', :text => 'Hours: 7:00'
1050 1050

  
1051 1051
    # 'Log time' shoudl link to log time on the filtered issue
1052 1052
    assert_select 'a[href=?]', "/issues/#{issue.id}/time_entries/new"
......
1060 1060
    @request.session[:user_id] = 2
1061 1061

  
1062 1062
    get :index, :params => {:project_id => 'ecookbook', :"issue.fixed_version_id" => version.id.to_s, :set_filter => 1}
1063
    assert_select '.total-for-hours', :text => 'Hours: 5.00'
1063
    assert_select '.total-for-hours', :text => 'Hours: 5:00'
1064 1064
  end
1065 1065

  
1066 1066
  def test_index_at_project_level_with_multiple_issue_fixed_version_ids
......
1084 1084
    assert_response :success
1085 1085

  
1086 1086
    assert_select 'tr.time-entry', 2
1087
    assert_select '.total-for-hours', :text => 'Hours: 5.00'
1087
    assert_select '.total-for-hours', :text => 'Hours: 5:00'
1088 1088
  end
1089 1089

  
1090 1090
  def test_index_at_project_level_with_date_range
......
1100 1100
    assert_response :success
1101 1101

  
1102 1102
    assert_select 'tr.time-entry', 3
1103
    assert_select '.total-for-hours', :text => 'Hours: 12.90'
1103
    assert_select '.total-for-hours', :text => 'Hours: 12:54'
1104 1104
    assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
1105 1105
  end
1106 1106

  
......
1116 1116
    assert_response :success
1117 1117

  
1118 1118
    assert_select 'tr.time-entry', 3
1119
    assert_select '.total-for-hours', :text => 'Hours: 12.90'
1119
    assert_select '.total-for-hours', :text => 'Hours: 12:54'
1120 1120
    assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
1121 1121
  end
1122 1122

  
......
1528 1528
    get :index, :params => {:project_id => 1, :format => 'atom'}
1529 1529
    assert_response :success
1530 1530
    assert_equal 'application/atom+xml', @response.media_type
1531
    assert_select 'entry > title', :text => /7\.65 hours/
1531
    assert_select 'entry > title', :text => /7:39 hours/
1532 1532
  end
1533 1533

  
1534 1534
  def test_index_at_project_level_should_include_csv_export_dialog
test/functional/timelog_report_test.rb
71 71
  def test_report_all_projects_one_criteria
72 72
    get :report, :params => {:columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']}
73 73
    assert_response :success
74
    assert_select 'tr.total td:last', :text => '8.65'
74
    assert_select 'tr.total td:last', :text => '8:39'
75 75
    assert_select 'tr td.name a[href=?]', '/projects/ecookbook', :text => 'eCookbook'
76 76
  end
77 77

  
78 78
  def test_report_all_time
79 79
    get :report, :params => {:project_id => 1, :criteria => ['project', 'issue']}
80 80
    assert_response :success
81
    assert_select 'tr.total td:last', :text => '162.90'
81
    assert_select 'tr.total td:last', :text => '162:54'
82 82
  end
83 83

  
84 84
  def test_report_all_time_by_day
85 85
    get :report, :params => {:project_id => 1, :criteria => ['project', 'issue'], :columns => 'day'}
86 86
    assert_response :success
87
    assert_select 'tr.total td:last', :text => '162.90'
87
    assert_select 'tr.total td:last', :text => '162:54'
88 88
    assert_select 'th', :text => '2007-03-12'
89 89
  end
90 90

  
91 91
  def test_report_one_criteria
92 92
    get :report, :params => {:project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']}
93 93
    assert_response :success
94
    assert_select 'tr.total td:last', :text => '8.65'
94
    assert_select 'tr.total td:last', :text => '8:39'
95 95
  end
96 96

  
97 97
  def test_report_two_criteria
98 98
    get :report, :params => {:project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]}
99 99
    assert_response :success
100
    assert_select 'tr.total td:last', :text => '162.90'
100
    assert_select 'tr.total td:last', :text => '162:54'
101 101
  end
102 102

  
103 103
  def test_report_should_show_locked_users
......
151 151
  def test_report_one_day
152 152
    get :report, :params => {:project_id => 1, :columns => 'day', :from => "2007-03-23", :to => "2007-03-23", :criteria => ["user", "activity"]}
153 153
    assert_response :success
154
    assert_select 'tr.total td:last', :text => '4.25'
154
    assert_select 'tr.total td:last', :text => '4:15'
155 155
  end
156 156

  
157 157
  def test_report_by_week_should_use_commercial_year
......
173 173
    end
174 174
    assert_select '#time-report tbody tr' do
175 175
      assert_select 'td:nth-child(1)', :text => 'eCookbook'
176
      assert_select 'td:nth-child(2)', :text => '2.00'
177
      assert_select 'td:nth-child(3)', :text => '12.00'
178
      assert_select 'td:nth-child(4)', :text => '16.00'
179
      assert_select 'td:nth-child(5)', :text => '30.00' # Total
176
      assert_select 'td:nth-child(2)', :text => '2:00'
177
      assert_select 'td:nth-child(3)', :text => '12:00'
178
      assert_select 'td:nth-child(4)', :text => '16:00'
179
      assert_select 'td:nth-child(5)', :text => '30:00' # Total
180 180
    end
181 181
  end
182 182

  
......
195 195
    get :report, :params => {:criteria => ['cf_1', 'cf_3', 'cf_7']}
196 196
    assert_response :success
197 197

  
198
    assert_select 'tr.total td:last', :text => '162.90'
198
    assert_select 'tr.total td:last', :text => '162:54'
199 199

  
200 200
    # Custom fields columns
201 201
    assert_select 'th', :text => 'Database'
......
205 205
    # Custom field row
206 206
    assert_select 'tr' do
207 207
      assert_select 'td', :text => 'MySQL'
208
      assert_select 'td.hours', :text => '1.00'
208
      assert_select 'td.hours', :text => '1:00'
209 209
    end
210 210
  end
211 211

  
test/functional/versions_controller_test.rb
162 162
      assert_select 'a', :text => '1 open'
163 163
    end
164 164

  
165
    assert_select '.time-tracking td.total-hours a:first-child', :text => '2.00 hours'
165
    assert_select '.time-tracking td.total-hours a:first-child', :text => '2:00 hours'
166 166
  end
167 167

  
168 168
  def test_show_should_link_to_spent_time_on_version
......
173 173
    get :show, :params => {:id => version.id}
174 174
    assert_response :success
175 175

  
176
    assert_select '.total-hours', :text => '7.20 hours'
176
    assert_select '.total-hours', :text => '7:12 hours'
177 177
    assert_select '.total-hours a[href=?]', "/projects/ecookbook/time_entries?issue.fixed_version_id=#{version.id}&set_filter=1"
178 178
  end
179 179

  
test/helpers/issues_helper_test.rb
204 204
  test 'show_detail should show old and new values with a estimated hours attribute' do
205 205
    detail = JournalDetail.new(:property => 'attr', :prop_key => 'estimated_hours',
206 206
                               :old_value => '5', :value => '6.3')
207
    assert_match '5.00', show_detail(detail, true)
208
    assert_match '6.30', show_detail(detail, true)
207
    assert_match '5:00', show_detail(detail, true)
208
    assert_match '6:18', show_detail(detail, true)
209 209
  end
210 210

  
211 211
  test 'show_detail should not show values with a description attribute' do
test/unit/lib/redmine/i18n_test.rb
158 158

  
159 159
  def test_l_hours_short
160 160
    set_language_if_valid 'en'
161
    assert_equal '2.00 h', l_hours_short(2.0)
161
    assert_equal '2:00 h', l_hours_short(2.0)
162 162
  end
163 163

  
164 164
  def test_number_to_currency_default
test/unit/lib/redmine/views/labelled_form_builder_test.rb
35 35
    entry.validate
36 36

  
37 37
    labelled_form_for(entry) do |f|
38
      assert_include 'value="2.50"', f.hours_field(:hours)
38
      assert_include 'value="2:30"', f.hours_field(:hours)
39 39
    end
40 40
  end
41 41

  
    (1-1/1)