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.3KB

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