| 
									
										
										
										
											2009-05-30 23:30:36 +00:00
										 |  |  | # redMine - project management software | 
					
						
							|  |  |  | # Copyright (C) 2006-2008  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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-12 23:24:34 +00:00
										 |  |  | require File.expand_path('../../test_helper', __FILE__) | 
					
						
							| 
									
										
										
										
											2009-05-30 23:30:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-13 17:14:35 +00:00
										 |  |  | class TimeEntryActivityTest < ActiveSupport::TestCase | 
					
						
							| 
									
										
										
										
											2009-05-30 23:30:36 +00:00
										 |  |  |   fixtures :enumerations, :time_entries | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_should_be_an_enumeration | 
					
						
							|  |  |  |     assert TimeEntryActivity.ancestors.include?(Enumeration) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   def test_objects_count | 
					
						
							|  |  |  |     assert_equal 3, TimeEntryActivity.find_by_name("Design").objects_count | 
					
						
							|  |  |  |     assert_equal 1, TimeEntryActivity.find_by_name("Development").objects_count | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_option_name | 
					
						
							|  |  |  |     assert_equal :enumeration_activities, TimeEntryActivity.new.option_name | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2009-10-21 22:34:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_create_with_custom_field | 
					
						
							|  |  |  |     field = TimeEntryActivityCustomField.find_by_name('Billable') | 
					
						
							|  |  |  |     e = TimeEntryActivity.new(:name => 'Custom Data') | 
					
						
							|  |  |  |     e.custom_field_values = {field.id => "1"} | 
					
						
							|  |  |  |     assert e.save | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e.reload | 
					
						
							|  |  |  |     assert_equal "1", e.custom_value_for(field).value | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_create_without_required_custom_field_should_fail | 
					
						
							|  |  |  |     field = TimeEntryActivityCustomField.find_by_name('Billable') | 
					
						
							|  |  |  |     field.update_attribute(:is_required, true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e = TimeEntryActivity.new(:name => 'Custom Data') | 
					
						
							|  |  |  |     assert !e.save | 
					
						
							|  |  |  |     assert_equal I18n.translate('activerecord.errors.messages.invalid'), e.errors.on(:custom_values) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_create_with_required_custom_field_should_succeed | 
					
						
							|  |  |  |     field = TimeEntryActivityCustomField.find_by_name('Billable') | 
					
						
							|  |  |  |     field.update_attribute(:is_required, true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e = TimeEntryActivity.new(:name => 'Custom Data') | 
					
						
							|  |  |  |     e.custom_field_values = {field.id => "1"} | 
					
						
							|  |  |  |     assert e.save | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_update_issue_with_required_custom_field_change | 
					
						
							|  |  |  |     field = TimeEntryActivityCustomField.find_by_name('Billable') | 
					
						
							|  |  |  |     field.update_attribute(:is_required, true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e = TimeEntryActivity.find(10) | 
					
						
							|  |  |  |     assert e.available_custom_fields.include?(field) | 
					
						
							|  |  |  |     # No change to custom field, record can be saved | 
					
						
							|  |  |  |     assert e.save | 
					
						
							|  |  |  |     # Blanking custom field, save should fail | 
					
						
							|  |  |  |     e.custom_field_values = {field.id => ""} | 
					
						
							|  |  |  |     assert !e.save | 
					
						
							|  |  |  |     assert e.errors.on(:custom_values) | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     # Update custom field to valid value, save should succeed | 
					
						
							|  |  |  |     e.custom_field_values = {field.id => "0"} | 
					
						
							|  |  |  |     assert e.save | 
					
						
							|  |  |  |     e.reload | 
					
						
							|  |  |  |     assert_equal "0", e.custom_value_for(field).value | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-30 23:30:36 +00:00
										 |  |  | end | 
					
						
							|  |  |  | 
 |