Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

custom_field_enumerations_controller_test.rb 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. # Redmine - project management software
  2. # Copyright (C) 2006-2017 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. require File.expand_path('../../test_helper', __FILE__)
  18. class CustomFieldEnumerationsControllerTest < Redmine::ControllerTest
  19. fixtures :users, :email_addresses
  20. def setup
  21. @request.session[:user_id] = 1
  22. @field = GroupCustomField.create!(:name => 'List', :field_format => 'enumeration', :is_required => false)
  23. @foo = CustomFieldEnumeration.new(:name => 'Foo')
  24. @bar = CustomFieldEnumeration.new(:name => 'Bar')
  25. @field.enumerations << @foo
  26. @field.enumerations << @bar
  27. end
  28. def test_index
  29. get :index, :params => {
  30. :custom_field_id => @field.id
  31. }
  32. assert_response :success
  33. assert_select 'ul#custom_field_enumerations' do
  34. assert_select 'li', 2
  35. end
  36. end
  37. def test_create
  38. assert_difference 'CustomFieldEnumeration.count' do
  39. post :create, :params => {
  40. :custom_field_id => @field.id,
  41. :custom_field_enumeration => {
  42. :name => 'Baz'
  43. }
  44. }
  45. assert_redirected_to "/custom_fields/#{@field.id}/enumerations"
  46. end
  47. assert_equal 3, @field.reload.enumerations.count
  48. enum = @field.enumerations.last
  49. assert_equal 'Baz', enum.name
  50. assert_equal true, enum.active
  51. assert_equal 3, enum.position
  52. end
  53. def test_create_xhr
  54. assert_difference 'CustomFieldEnumeration.count' do
  55. post :create, :params => {
  56. :custom_field_id => @field.id,
  57. :custom_field_enumeration => {
  58. :name => 'Baz'
  59. }
  60. },
  61. :xhr => true
  62. assert_response :success
  63. end
  64. end
  65. def test_update_each
  66. put :update_each, :params => {
  67. :custom_field_id => @field.id,
  68. :custom_field_enumerations => {
  69. @bar.id.to_s => {
  70. :position => "1",
  71. :name => "Baz",
  72. :active => "1"
  73. },
  74. @foo.id.to_s => {
  75. :position => "2",
  76. :name => "Foo",
  77. :active => "0"
  78. }
  79. }
  80. }
  81. assert_response 302
  82. @bar.reload
  83. assert_equal "Baz", @bar.name
  84. assert_equal true, @bar.active
  85. assert_equal 1, @bar.position
  86. @foo.reload
  87. assert_equal "Foo", @foo.name
  88. assert_equal false, @foo.active
  89. assert_equal 2, @foo.position
  90. end
  91. def test_destroy
  92. assert_difference 'CustomFieldEnumeration.count', -1 do
  93. delete :destroy, :params => {
  94. :custom_field_id => @field.id,
  95. :id => @foo.id
  96. }
  97. assert_redirected_to "/custom_fields/#{@field.id}/enumerations"
  98. end
  99. assert_equal 1, @field.reload.enumerations.count
  100. enum = @field.enumerations.last
  101. assert_equal 'Bar', enum.name
  102. end
  103. def test_destroy_enumeration_in_use_should_display_destroy_form
  104. group = Group.generate!
  105. group.custom_field_values = {@field.id.to_s => @foo.id.to_s}
  106. group.save!
  107. assert_no_difference 'CustomFieldEnumeration.count' do
  108. delete :destroy, :params => {
  109. :custom_field_id => @field.id,
  110. :id => @foo.id
  111. }
  112. assert_response :success
  113. assert_select 'select[name=?]', 'reassign_to_id'
  114. end
  115. end
  116. def test_destroy_enumeration_in_use_should_destroy_and_reassign_values
  117. group = Group.generate!
  118. group.custom_field_values = {@field.id.to_s => @foo.id.to_s}
  119. group.save!
  120. assert_difference 'CustomFieldEnumeration.count', -1 do
  121. delete :destroy, :params => {
  122. :custom_field_id => @field.id,
  123. :id => @foo.id,
  124. :reassign_to_id => @bar.id
  125. }
  126. assert_response 302
  127. end
  128. assert_equal @bar.id.to_s, group.reload.custom_field_value(@field)
  129. end
  130. end