diff --git a/update_quality.rb b/update_quality.rb index bd1f10f..e23335c 100644 --- a/update_quality.rb +++ b/update_quality.rb @@ -2,48 +2,30 @@ def update_quality(awards) awards.each do |award| - if award.name != 'Blue First' && award.name != 'Blue Compare' - if award.quality > 0 - if award.name != 'Blue Distinction Plus' - award.quality -= 1 - end - end + case award.name + when 'Blue First' + award.quality += 1 + award.quality += 1 if award.expires_in <= 0 + when 'Blue Compare' + award.quality += 1 + award.quality += 1 if award.expires_in <= 10 + award.quality += 1 if award.expires_in <= 5 + award.quality = 0 if award.expires_in <= 0 + when 'Blue Star' + award.quality -= 2 + award.quality -= 2 if award.expires_in <= 0 else - if award.quality < 50 - award.quality += 1 - if award.name == 'Blue Compare' - if award.expires_in < 11 - if award.quality < 50 - award.quality += 1 - end - end - if award.expires_in < 6 - if award.quality < 50 - award.quality += 1 - end - end - end - end - end - if award.name != 'Blue Distinction Plus' - award.expires_in -= 1 - end - if award.expires_in < 0 - if award.name != 'Blue First' - if award.name != 'Blue Compare' - if award.quality > 0 - if award.name != 'Blue Distinction Plus' - award.quality -= 1 - end - end - else - award.quality = award.quality - award.quality - end - else - if award.quality < 50 - award.quality += 1 - end - end + next if award.name == 'Blue Distinction Plus' + + award.quality -= 1 + award.quality -= 1 if award.expires_in <= 0 end + + # Keep quality value within range (0..50) + award.quality = 0 if award.quality < 0 + award.quality = 50 if award.quality > 50 && award.name != 'Blue Distinction Plus' + + # Decrease expiration days for all awards except Blue Distinction Plus + award.expires_in -= 1 if award.name != 'Blue Distinction Plus' end end diff --git a/update_quality_spec.rb b/update_quality_spec.rb index 973940d..879da5a 100644 --- a/update_quality_spec.rb +++ b/update_quality_spec.rb @@ -177,7 +177,6 @@ end context 'given a Blue Star award' do - before { pending } let(:name) { 'Blue Star' } before { award.expires_in.should == initial_expires_in-1 }