overview_spec.rb 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. require 'rails_helper'
  2. RSpec.describe Overview do
  3. context 'link generation' do
  4. it 'generates from name' do
  5. overview = create(:overview, name: 'Not Shown Admin 2')
  6. expect(overview.link).to eq('not_shown_admin_2')
  7. end
  8. it 'ensures uniquenes' do
  9. overview1, overview2, overview3 = create_list(:overview, 3, name: 'Übersicht')
  10. expect(overview1.link).not_to eq(overview2.link)
  11. expect(overview1.link).not_to eq(overview3.link)
  12. expect(overview2.link).not_to eq(overview3.link)
  13. end
  14. context 'given link' do
  15. it 'keeps on create' do
  16. overview = create(:overview, name: 'Übersicht', link: 'my_overview')
  17. expect(overview.link).to eq('my_overview')
  18. end
  19. it 'keeps on update' do
  20. overview = create(:overview, name: 'Übersicht')
  21. overview.update!(link: 'my_overview_2')
  22. expect(overview.link).to eq('my_overview_2')
  23. end
  24. end
  25. context 'URL save' do
  26. it 'handles umlauts' do
  27. overview = create(:overview, name: 'Übersicht')
  28. expect(overview.link).to eq('ubersicht')
  29. end
  30. it 'handles spaces' do
  31. overview = create(:overview, name: " Meine Übersicht \n")
  32. expect(overview.link).to eq('meine_ubersicht')
  33. end
  34. it 'handles special chars' do
  35. overview = create(:overview, name: 'Д дФ ф')
  36. expect(overview.link).to match(/^\d{1,3}$/)
  37. end
  38. it 'removes special char fallback if possible' do
  39. overview = create(:overview, name: ' Д дФ ф abc ')
  40. expect(overview.link).to eq('abc')
  41. end
  42. end
  43. end
  44. describe '#rearrangement' do
  45. it 'rearranges prio of other overviews on prio change' do
  46. overview1 = create(:overview, prio: 1)
  47. overview2 = create(:overview, prio: 2)
  48. overview3 = create(:overview, prio: 3)
  49. overview2.update!(prio: 3)
  50. overviews = described_class.all.order(prio: :asc).pluck(:id)
  51. expect(overviews.first).to eq(overview1.id)
  52. expect(overviews.second).to eq(overview3.id)
  53. expect(overviews.third).to eq(overview2.id)
  54. end
  55. end
  56. end