Mercurial > hg > soundsoftware-site
comparison test/unit/custom_field_test.rb @ 1464:261b3d9a4903 redmine-2.4
Update to Redmine 2.4 branch rev 12663
author | Chris Cannam |
---|---|
date | Tue, 14 Jan 2014 14:37:42 +0000 |
parents | 433d4f72a19b |
children | e248c7af89ec |
comparison
equal
deleted
inserted
replaced
1296:038ba2d95de8 | 1464:261b3d9a4903 |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2012 Jean-Philippe Lang | 2 # Copyright (C) 2006-2013 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
55 def test_default_value_should_not_be_validated_when_blank | 55 def test_default_value_should_not_be_validated_when_blank |
56 field = CustomField.new(:name => 'Test', :field_format => 'list', :possible_values => ['a', 'b'], :is_required => true, :default_value => '') | 56 field = CustomField.new(:name => 'Test', :field_format => 'list', :possible_values => ['a', 'b'], :is_required => true, :default_value => '') |
57 assert field.valid? | 57 assert field.valid? |
58 end | 58 end |
59 | 59 |
60 def test_field_format_should_be_validated | |
61 field = CustomField.new(:name => 'Test', :field_format => 'foo') | |
62 assert !field.valid? | |
63 end | |
64 | |
65 def test_field_format_validation_should_accept_formats_added_at_runtime | |
66 Redmine::CustomFieldFormat.register 'foobar' | |
67 | |
68 field = CustomField.new(:name => 'Some Custom Field', :field_format => 'foobar') | |
69 assert field.valid?, 'field should be valid' | |
70 ensure | |
71 Redmine::CustomFieldFormat.delete 'foobar' | |
72 end | |
73 | |
60 def test_should_not_change_field_format_of_existing_custom_field | 74 def test_should_not_change_field_format_of_existing_custom_field |
61 field = CustomField.find(1) | 75 field = CustomField.find(1) |
62 field.field_format = 'int' | 76 field.field_format = 'int' |
63 assert_equal 'list', field.field_format | 77 assert_equal 'list', field.field_format |
64 end | 78 end |
207 | 221 |
208 assert f.valid_field_value?(['value1', 'value2']) | 222 assert f.valid_field_value?(['value1', 'value2']) |
209 assert !f.valid_field_value?(['value1', 'abc']) | 223 assert !f.valid_field_value?(['value1', 'abc']) |
210 end | 224 end |
211 | 225 |
226 def test_changing_multiple_to_false_should_delete_multiple_values | |
227 field = ProjectCustomField.create!(:name => 'field', :field_format => 'list', :multiple => 'true', :possible_values => ['field1', 'field2']) | |
228 other = ProjectCustomField.create!(:name => 'other', :field_format => 'list', :multiple => 'true', :possible_values => ['other1', 'other2']) | |
229 | |
230 item_with_multiple_values = Project.generate!(:custom_field_values => {field.id => ['field1', 'field2'], other.id => ['other1', 'other2']}) | |
231 item_with_single_values = Project.generate!(:custom_field_values => {field.id => ['field1'], other.id => ['other2']}) | |
232 | |
233 assert_difference 'CustomValue.count', -1 do | |
234 field.multiple = false | |
235 field.save! | |
236 end | |
237 | |
238 item_with_multiple_values = Project.find(item_with_multiple_values.id) | |
239 assert_kind_of String, item_with_multiple_values.custom_field_value(field) | |
240 assert_kind_of Array, item_with_multiple_values.custom_field_value(other) | |
241 assert_equal 2, item_with_multiple_values.custom_field_value(other).size | |
242 end | |
243 | |
212 def test_value_class_should_return_the_class_used_for_fields_values | 244 def test_value_class_should_return_the_class_used_for_fields_values |
213 assert_equal User, CustomField.new(:field_format => 'user').value_class | 245 assert_equal User, CustomField.new(:field_format => 'user').value_class |
214 assert_equal Version, CustomField.new(:field_format => 'version').value_class | 246 assert_equal Version, CustomField.new(:field_format => 'version').value_class |
215 end | 247 end |
216 | 248 |
221 | 253 |
222 def test_value_from_keyword_for_list_custom_field | 254 def test_value_from_keyword_for_list_custom_field |
223 field = CustomField.find(1) | 255 field = CustomField.find(1) |
224 assert_equal 'PostgreSQL', field.value_from_keyword('postgresql', Issue.find(1)) | 256 assert_equal 'PostgreSQL', field.value_from_keyword('postgresql', Issue.find(1)) |
225 end | 257 end |
258 | |
259 def test_visibile_scope_with_admin_should_return_all_custom_fields | |
260 CustomField.delete_all | |
261 fields = [ | |
262 CustomField.generate!(:visible => true), | |
263 CustomField.generate!(:visible => false), | |
264 CustomField.generate!(:visible => false, :role_ids => [1, 3]), | |
265 CustomField.generate!(:visible => false, :role_ids => [1, 2]), | |
266 ] | |
267 | |
268 assert_equal 4, CustomField.visible(User.find(1)).count | |
269 end | |
270 | |
271 def test_visibile_scope_with_non_admin_user_should_return_visible_custom_fields | |
272 CustomField.delete_all | |
273 fields = [ | |
274 CustomField.generate!(:visible => true), | |
275 CustomField.generate!(:visible => false), | |
276 CustomField.generate!(:visible => false, :role_ids => [1, 3]), | |
277 CustomField.generate!(:visible => false, :role_ids => [1, 2]), | |
278 ] | |
279 user = User.generate! | |
280 User.add_to_project(user, Project.first, Role.find(3)) | |
281 | |
282 assert_equal [fields[0], fields[2]], CustomField.visible(user).order("id").to_a | |
283 end | |
284 | |
285 def test_visibile_scope_with_anonymous_user_should_return_visible_custom_fields | |
286 CustomField.delete_all | |
287 fields = [ | |
288 CustomField.generate!(:visible => true), | |
289 CustomField.generate!(:visible => false), | |
290 CustomField.generate!(:visible => false, :role_ids => [1, 3]), | |
291 CustomField.generate!(:visible => false, :role_ids => [1, 2]), | |
292 ] | |
293 | |
294 assert_equal [fields[0]], CustomField.visible(User.anonymous).order("id").to_a | |
295 end | |
226 end | 296 end |