To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / test / unit / .svn / text-base / time_entry_test.rb.svn-base @ 442:753f1380d6bc

History | View | Annotate | Download (4.22 KB)

1
# redMine - project management software
2
# Copyright (C) 2006-2008  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
# 
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
# 
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

    
18
require File.expand_path('../../test_helper', __FILE__)
19

    
20
class TimeEntryTest < ActiveSupport::TestCase
21
  fixtures :issues, :projects, :users, :time_entries
22

    
23
  def test_hours_format
24
    assertions = { "2"      => 2.0,
25
                   "21.1"   => 21.1,
26
                   "2,1"    => 2.1,
27
                   "1,5h"   => 1.5,
28
                   "7:12"   => 7.2,
29
                   "10h"    => 10.0,
30
                   "10 h"   => 10.0,
31
                   "45m"    => 0.75,
32
                   "45 m"   => 0.75,
33
                   "3h15"   => 3.25,
34
                   "3h 15"  => 3.25,
35
                   "3 h 15"   => 3.25,
36
                   "3 h 15m"  => 3.25,
37
                   "3 h 15 m" => 3.25,
38
                   "3 hours"  => 3.0,
39
                   "12min"    => 0.2,
40
                  }
41
    
42
    assertions.each do |k, v|
43
      t = TimeEntry.new(:hours => k)
44
      assert_equal v, t.hours, "Converting #{k} failed:"
45
    end
46
  end
47
  
48
  def test_hours_should_default_to_nil
49
    assert_nil TimeEntry.new.hours
50
  end
51
  
52
  def test_spent_on_with_blank
53
    c = TimeEntry.new
54
    c.spent_on = ''
55
    assert_nil c.spent_on
56
  end
57
  
58
  def test_spent_on_with_nil
59
    c = TimeEntry.new
60
    c.spent_on = nil
61
    assert_nil c.spent_on
62
  end
63
  
64
  def test_spent_on_with_string
65
    c = TimeEntry.new
66
    c.spent_on = "2011-01-14"
67
    assert_equal Date.parse("2011-01-14"), c.spent_on
68
  end
69
  
70
  def test_spent_on_with_invalid_string
71
    c = TimeEntry.new
72
    c.spent_on = "foo"
73
    assert_nil c.spent_on
74
  end
75
  
76
  def test_spent_on_with_date
77
    c = TimeEntry.new
78
    c.spent_on = Date.today
79
    assert_equal Date.today, c.spent_on
80
  end
81
  
82
  def test_spent_on_with_time
83
    c = TimeEntry.new
84
    c.spent_on = Time.now
85
    assert_equal Date.today, c.spent_on
86
  end
87

    
88
  context "#earilest_date_for_project" do
89
    setup do
90
      User.current = nil
91
      @public_project = Project.generate!(:is_public => true)
92
      @issue = Issue.generate_for_project!(@public_project)
93
      TimeEntry.generate!(:spent_on => '2010-01-01',
94
                          :issue => @issue,
95
                          :project => @public_project)
96
    end
97
    
98
    context "without a project" do
99
      should "return the lowest spent_on value that is visible to the current user" do
100
        assert_equal "2007-03-12", TimeEntry.earilest_date_for_project.to_s
101
      end
102
    end
103

    
104
    context "with a project" do
105
      should "return the lowest spent_on value that is visible to the current user for that project and it's subprojects only" do
106
        assert_equal "2010-01-01", TimeEntry.earilest_date_for_project(@public_project).to_s
107
      end
108
    end
109
      
110
  end
111

    
112
  context "#latest_date_for_project" do
113
    setup do
114
      User.current = nil
115
      @public_project = Project.generate!(:is_public => true)
116
      @issue = Issue.generate_for_project!(@public_project)
117
      TimeEntry.generate!(:spent_on => '2010-01-01',
118
                          :issue => @issue,
119
                          :project => @public_project)
120
    end
121

    
122
    context "without a project" do
123
      should "return the highest spent_on value that is visible to the current user" do
124
        assert_equal "2010-01-01", TimeEntry.latest_date_for_project.to_s
125
      end
126
    end
127

    
128
    context "with a project" do
129
      should "return the highest spent_on value that is visible to the current user for that project and it's subprojects only" do
130
        project = Project.find(1)
131
        assert_equal "2007-04-22", TimeEntry.latest_date_for_project(project).to_s
132
      end
133
    end
134
  end  
135
end