Fixes #3490 - Error 500:{"error":"undefined method `+' for nil:NilClass"} - Creating Overview

This commit is contained in:
Mantas 2021-04-02 08:48:57 +03:00
parent a56245defa
commit 276d9281cf
2 changed files with 27 additions and 5 deletions

View file

@ -19,6 +19,14 @@ class Overview < ApplicationModel
before_create :fill_link_on_create, :fill_prio before_create :fill_link_on_create, :fill_prio
before_update :fill_link_on_update, :rearrangement before_update :fill_link_on_update, :rearrangement
def self.calculate_prio
existing_maximum = Overview.maximum(:prio)
return 0 if !existing_maximum
existing_maximum + 1
end
private private
def rearrangement def rearrangement
@ -63,7 +71,7 @@ class Overview < ApplicationModel
def fill_prio def fill_prio
return true if prio.present? return true if prio.present?
self.prio = Overview.maximum(:prio) + 1 self.prio = self.class.calculate_prio
true true
end end

View file

@ -75,18 +75,32 @@ RSpec.describe Overview, type: :model do
end end
describe '#fill_prio' do describe '#fill_prio' do
before do
described_class.destroy_all
end
it 'fill an empty prio with the maximum prio plus one' do it 'fill an empty prio with the maximum prio plus one' do
overview1 = create(:overview, prio: 1) overview1 = create(:overview, prio: 1)
overview2 = create(:overview, prio: 200) overview2 = create(:overview, prio: 200)
overview3 = create(:overview, prio: nil) overview3 = create(:overview, prio: nil)
overviews = described_class.all.order(prio: :asc).pluck(:id) overviews = described_class.all.order(prio: :asc).pluck(:id)
expect(overviews.first).to eq(overview1.id) expect(overviews).to eq [overview1.id, overview2.id, overview3.id]
expect(overviews.second).to eq(overview2.id) end
expect(overviews.last).to eq(overview3.id)
it 'sets first Overview priority as 0' do
overview = create :overview, prio: nil
expect(overview.prio).to be 0
end
it 'sets new Overview priority as +1' do
create :overview, prio: 123
overview_next = create :overview, prio: nil
expect(overview_next.prio).to be 124
end end
end end
end end