normalize_setting_ticket_number_ignore_system_id_spec.rb 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe NormalizeSettingTicketNumberIgnoreSystemId, type: :db_migration do
  4. before do
  5. Setting.find_by(name: 'ticket_number_ignore_system_id')&.destroy
  6. Setting.create(
  7. title: 'Ticket Number ignore system_id',
  8. name: 'ticket_number_ignore_system_id',
  9. area: 'Ticket::Core',
  10. description: '-',
  11. options: {
  12. form: [
  13. {
  14. display: 'Ignore system_id',
  15. null: true,
  16. name: 'ticket_number_ignore_system_id',
  17. tag: 'boolean',
  18. options: {
  19. true => 'yes',
  20. false => 'no',
  21. },
  22. },
  23. ],
  24. },
  25. state: {
  26. ticket_number_ignore_system_id: false
  27. },
  28. preferences: {
  29. permission: ['admin.ticket'],
  30. hidden: true,
  31. },
  32. frontend: false
  33. )
  34. end
  35. context 'when previous migration incorrectly sets "ticket_number_ignore_system_id" to hash' do
  36. it 'sets it to false' do
  37. expect { migrate }
  38. .to change { Setting.get('ticket_number_ignore_system_id') }
  39. .to(false)
  40. end
  41. it 'sets #state_initial to { value: false }' do
  42. expect { migrate }
  43. .to change { Setting.find_by(name: 'ticket_number_ignore_system_id').state_initial }
  44. .to({ 'value' => false })
  45. end
  46. end
  47. context 'when "ticket_number_ignore_system_id" Setting is a boolean' do
  48. before { Setting.set('ticket_number_ignore_system_id', true) }
  49. it 'makes no change' do
  50. expect { migrate }
  51. .not_to change { Setting.get('ticket_number_ignore_system_id') }
  52. end
  53. it 'sets #state_initial to { value: false }' do
  54. expect { migrate }
  55. .to change { Setting.find_by(name: 'ticket_number_ignore_system_id').state_initial }
  56. .to({ 'value' => false })
  57. end
  58. end
  59. context 'when no "ticket_number_ignore_system_id" Setting exists (edge case)' do
  60. before { Setting.find_by(name: 'ticket_number_ignore_system_id').destroy }
  61. it 'completes without error' do
  62. expect { migrate }.not_to raise_error
  63. end
  64. end
  65. end