diff --git a/update_quality.py b/update_quality.py index f72ce74..93ea732 100644 --- a/update_quality.py +++ b/update_quality.py @@ -1,19 +1,21 @@ def update_quality(awards): for award in awards: - if award.name != 'Blue First' and award.name != 'Blue Compare': + #UserStory: Handle Blue Star Award seperately + if award.name != 'Blue First' and award.name != 'Blue Compare' and award.name != 'Blue Star': if award.quality > 0: if award.name != 'Blue Distinction Plus': award.quality -= 1 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 - if award.expires_in < 6: - if award.quality < 50: - award.quality += 1 + if award.name != 'Blue Star': + if award.quality < 50: + award.quality += 1 + if award.name == 'Blue Compare': + if award.expires_in < 11: + if award.quality < 50: + award.quality += 1 + if award.expires_in < 6: + if award.quality < 50: + award.quality += 1 if award.name != 'Blue Distinction Plus': award.expires_in -= 1 @@ -22,11 +24,22 @@ def update_quality(awards): if award.name != 'Blue First': if award.name != 'Blue Compare': if award.quality > 0: - if award.name != 'Blue Distinction Plus': + if award.name != 'Blue Distinction Plus' and award.name != 'Blue Star': award.quality -= 1 else: award.quality = award.quality - award.quality - else: - if award.quality < 50: - award.quality += 1 + else: + if award.name != 'Blue Star': + if award.quality < 50: + award.quality += 1 + #UserStory: Handle Blue Star Award seperately here to lose quality value twice as fast as normal awards. + if award.name == 'Blue Star': + if award.quality > 1: + if award.expires_in > 0: + award.quality -= 2 + else: + award.quality -= 4 + if award.quality < 0: #Handle quality to not make negative during calculation + award.quality = 0 + diff --git a/update_quality.rb b/update_quality.rb index bd1f10f..3c897bb 100644 --- a/update_quality.rb +++ b/update_quality.rb @@ -2,7 +2,17 @@ def update_quality(awards) awards.each do |award| - if award.name != 'Blue First' && award.name != 'Blue Compare' + #UserStory: Handle Blue Star Award here to lose quality value twice as fast as normal awards. + if award.name == 'Blue Star' + if award.quality > 0 + if award.expires_in > 0 + degradation_factor = 2 + else + degradation_factor = 4 + end + award.quality -= degradation_factor + end + elsif award.name != 'Blue First' && award.name != 'Blue Compare' if award.quality > 0 if award.name != 'Blue Distinction Plus' award.quality -= 1 @@ -32,7 +42,8 @@ def update_quality(awards) if award.name != 'Blue First' if award.name != 'Blue Compare' if award.quality > 0 - if award.name != 'Blue Distinction Plus' + awardsNameArr = ['Blue Distinction Plus', 'Blue Star'] + if !(awardsNameArr.include? award.name) award.quality -= 1 end end diff --git a/update_quality_spec.rb b/update_quality_spec.rb index 973940d..59f60ec 100644 --- a/update_quality_spec.rb +++ b/update_quality_spec.rb @@ -176,8 +176,7 @@ end end - context 'given a Blue Star award' do - before { pending } + context 'given a Blue Star award' do #Removed pending as Blue Star award is implemented let(:name) { 'Blue Star' } before { award.expires_in.should == initial_expires_in-1 } diff --git a/update_quality_test.py b/update_quality_test.py index 45d0787..a3c9d78 100644 --- a/update_quality_test.py +++ b/update_quality_test.py @@ -83,7 +83,8 @@ def test_blue_compare(initial_expires_in, initial_quality, expected_quality): (-10,10,6), (-10,0,0), ]) -@pytest.mark.xfail(reason = 'Pending') +#Dont Fail test as Blue Star Award is implemented +#@pytest.mark.xfail(reason = 'Pending') def test_blue_star(initial_expires_in, initial_quality, expected_quality): award = Award(name = 'Blue Star', expires_in = initial_expires_in, quality = initial_quality)