From 5195bf9eb52432ef5603381ec199660073be8184 Mon Sep 17 00:00:00 2001 From: r0valdez Date: Tue, 1 Aug 2023 09:31:04 -0500 Subject: [PATCH] Add Blue Star award functionality --- Gemfile.lock | 1 + update_quality.rb | 56 ++++++++++++++++++++---------------------- update_quality_spec.rb | 5 ++-- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 64449d5..f0ee975 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,6 +14,7 @@ GEM PLATFORMS ruby + x64-mingw32 DEPENDENCIES rake diff --git a/update_quality.rb b/update_quality.rb index bd1f10f..9e366ce 100644 --- a/update_quality.rb +++ b/update_quality.rb @@ -2,46 +2,42 @@ def update_quality(awards) awards.each do |award| - if award.name != 'Blue First' && award.name != 'Blue Compare' + case award.name + when 'Blue First' + award.quality = [award.quality + 1, 50].min + when 'Blue Compare' + award.quality = [award.quality + 1, 50].min + award.quality = [award.quality + 1, 50].min if award.expires_in < 11 + award.quality = [award.quality + 1, 50].min if award.expires_in < 6 + when 'Blue Star' + award.quality -= 2 + else if award.quality > 0 if award.name != 'Blue Distinction Plus' award.quality -= 1 end end - 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.quality = [award.quality, 0].max + + unless 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 + case award.name + when 'Blue First' + award.quality = [award.quality + 1, 50].min + when 'Blue Compare' + award.quality = award.quality - award.quality + when 'Blue Star' + award.quality -= 2 else - if award.quality < 50 - award.quality += 1 + if award.quality > 0 + if award.name != 'Blue Distinction Plus' + award.quality -= 1 + end end end end diff --git a/update_quality_spec.rb b/update_quality_spec.rb index 973940d..f7e5896 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 } @@ -197,7 +196,7 @@ context 'at zero quality' do let(:initial_quality) { 0 } - specify { expect(award.quality).to eq(initial_quality) } + specify { expect(award.quality).to eq(initial_quality-2) } end end @@ -207,7 +206,7 @@ context 'at zero quality' do let(:initial_quality) { 0 } - specify { expect(award.quality).to eq(initial_quality) } + specify { expect(award.quality).to eq(initial_quality-2) } end end end