You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

custom_field_enumerations_controller_test.rb 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. # frozen_string_literal: true
  2. # Redmine - project management software
  3. # Copyright (C) 2006- Jean-Philippe Lang
  4. #
  5. # This program is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU General Public License
  7. # as published by the Free Software Foundation; either version 2
  8. # of the License, or (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. require_relative '../test_helper'
  19. class CustomFieldEnumerationsControllerTest < Redmine::ControllerTest
  20. fixtures :users, :email_addresses
  21. def setup
  22. @request.session[:user_id] = 1
  23. @field = GroupCustomField.create!(:name => 'List', :field_format => 'enumeration', :is_required => false)
  24. @foo = CustomFieldEnumeration.new(:name => 'Foo')
  25. @bar = CustomFieldEnumeration.new(:name => 'Bar')
  26. @field.enumerations << @foo
  27. @field.enumerations << @bar
  28. end
  29. def test_index
  30. get(
  31. :index,
  32. :params => {
  33. :custom_field_id => @field.id
  34. }
  35. )
  36. assert_response :success
  37. assert_select 'ul#custom_field_enumerations' do
  38. assert_select 'li', 2
  39. end
  40. end
  41. def test_create
  42. assert_difference 'CustomFieldEnumeration.count' do
  43. post(
  44. :create,
  45. :params => {
  46. :custom_field_id => @field.id,
  47. :custom_field_enumeration => {
  48. :name => 'Baz'
  49. }
  50. }
  51. )
  52. assert_redirected_to "/custom_fields/#{@field.id}/enumerations"
  53. end
  54. assert_equal 3, @field.reload.enumerations.count
  55. enum = @field.enumerations.last
  56. assert_equal 'Baz', enum.name
  57. assert_equal true, enum.active
  58. assert_equal 3, enum.position
  59. end
  60. def test_create_xhr
  61. assert_difference 'CustomFieldEnumeration.count' do
  62. post(
  63. :create,
  64. :params => {
  65. :custom_field_id => @field.id,
  66. :custom_field_enumeration => {
  67. :name => 'Baz'
  68. }
  69. },
  70. :xhr => true
  71. )
  72. assert_response :success
  73. end
  74. end
  75. def test_update_each
  76. put(
  77. :update_each,
  78. :params => {
  79. :custom_field_id => @field.id,
  80. :custom_field_enumerations => {
  81. @bar.id.to_s => {
  82. :position => "1",
  83. :name => "Baz",
  84. :active => "1"
  85. },
  86. @foo.id.to_s => {
  87. :position => "2",
  88. :name => "Foo",
  89. :active => "0"
  90. }
  91. }
  92. }
  93. )
  94. assert_response 302
  95. @bar.reload
  96. assert_equal "Baz", @bar.name
  97. assert_equal true, @bar.active
  98. assert_equal 1, @bar.position
  99. @foo.reload
  100. assert_equal "Foo", @foo.name
  101. assert_equal false, @foo.active
  102. assert_equal 2, @foo.position
  103. end
  104. def test_destroy
  105. assert_difference 'CustomFieldEnumeration.count', -1 do
  106. delete(
  107. :destroy,
  108. :params => {
  109. :custom_field_id => @field.id,
  110. :id => @foo.id
  111. }
  112. )
  113. assert_redirected_to "/custom_fields/#{@field.id}/enumerations"
  114. end
  115. assert_equal 1, @field.reload.enumerations.count
  116. enum = @field.enumerations.last
  117. assert_equal 'Bar', enum.name
  118. end
  119. def test_destroy_enumeration_in_use_should_display_destroy_form
  120. group = Group.generate!
  121. group.custom_field_values = {@field.id.to_s => @foo.id.to_s}
  122. group.save!
  123. assert_no_difference 'CustomFieldEnumeration.count' do
  124. delete(
  125. :destroy,
  126. :params => {
  127. :custom_field_id => @field.id,
  128. :id => @foo.id
  129. }
  130. )
  131. assert_response :success
  132. assert_select 'select[name=?]', 'reassign_to_id'
  133. end
  134. end
  135. def test_destroy_enumeration_in_use_should_destroy_and_reassign_values
  136. group = Group.generate!
  137. group.custom_field_values = {@field.id.to_s => @foo.id.to_s}
  138. group.save!
  139. assert_difference 'CustomFieldEnumeration.count', -1 do
  140. delete(
  141. :destroy,
  142. :params => {
  143. :custom_field_id => @field.id,
  144. :id => @foo.id,
  145. :reassign_to_id => @bar.id
  146. }
  147. )
  148. assert_response 302
  149. end
  150. assert_equal @bar.id.to_s, group.reload.custom_field_value(@field)
  151. end
  152. end