normalize_setting_ticket_number_ignore_system_id_spec.rb 2.1 KB

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