Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7.2
3.1.2
27 changes: 16 additions & 11 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
GEM
remote: https://rubygems.org/
specs:
diff-lcs (1.2.5)
diff-lcs (1.5.0)
rake (13.0.6)
rspec (2.14.1)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
rspec-core (2.14.8)
rspec-expectations (2.14.5)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.6)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-support (3.12.0)

PLATFORMS
ruby
x86_64-linux

DEPENDENCIES
rake
rspec

BUNDLED WITH
2.3.16
2.3.23
1 change: 0 additions & 1 deletion award.rb

This file was deleted.

85 changes: 85 additions & 0 deletions models.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
module Award
attr_reader :expires_in, :quality

def initialize(expires_in, quality)
validate_input(expires_in, quality)
@expires_in = expires_in
@quality = quality
end

def is_distinction_plus?
self.class.name == "BlueDistinctionPlusAward"
end

def update_quality
unless is_distinction_plus?
update_expiry
super
normalize_quality
end
end

def update_expiry
@expires_in -= 1
end

def expired?
@expires_in <= 0
end

def validate_input(expires_in, quality)
raise "Invalid expiry" unless expires_in.is_a?(Integer)
raise "Invalid quality" unless quality.is_a?(Integer) && (
is_distinction_plus? ? quality == 80 : (0..50).include?(quality)
)
end

def normalize_quality
@quality = 50 if @quality > 50
@quality = 0 if @quality < 0
end
end

class BaseAward
prepend Award

def update_quality
@quality -= (expired? ? 2: 1)
end
end

class BlueFirstAward
prepend Award

def update_quality
@quality += (expired? ? 2 : 1)
end
end

class BlueDistinctionPlusAward
prepend Award
end

class BlueCompareAward
prepend Award

def update_quality
if @expires_in < 0
@quality = 0
elsif @expires_in <= 4
@quality += 3
elsif @expires_in <= 9
@quality += 2
else
@quality += 1
end
end
end

class BlueStarAward
prepend Award

def update_quality
@quality -= (expired? ? 4: 2)
end
end
49 changes: 0 additions & 49 deletions update_quality.rb

This file was deleted.

Loading