Skip to content

Commit

Permalink
More measurement spec fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
vbrazo committed May 17, 2018
1 parent 4a8be38 commit 1aa3435
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 28 deletions.
32 changes: 30 additions & 2 deletions doc/measurement.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,49 @@ Faker::Measurement.height #=> "6 inches"

Faker::Measurement.height(1.4) #=> "1.4 inches"

Faker::Measurement.height("none") #=> "inch"
Faker::Measurement.height_none #=> "inch"

Faker::Measurement.height("all") #=> "inches"
Faker::Measurement.height_all #=> "inches"

Faker::Measurement.length #=> "1 yard"

Faker::Measurement.length_none #=> "yard"

Faker::Measurement.length_all #=> "yards"

Faker::Measurement.volume #=> "10 cups"

Faker::Measurement.volume_none #=> "cup"

Faker::Measurement.volume_all #=> "cups"

Faker::Measurement.weight #=> "3 pounds"

Faker::Measurement.weight_none #=> "pound"

Faker::Measurement.weight_all #=> "pounds"

Faker::Measurement.metric_height #=> "2 meters"

Faker::Measurement.metric_height_none #=> "meter"

Faker::Measurement.metric_height_all #=> "meters"

Faker::Measurement.metric_length #=> "0 decimeters"

Faker::Measurement.metric_length_none #=> "decimeter"

Faker::Measurement.metric_length_all #=> "decimeters"

Faker::Measurement.metric_volume #=> "1 liter"

Faker::Measurement.metric_volume_none #=> "liter"

Faker::Measurement.metric_volume_all #=> "liters"

Faker::Measurement.metric_weight #=> "8 grams"

Faker::Measurement.metric_weight_none #=> "gram"

Faker::Measurement.metric_weight_all #=> "grams"
```
29 changes: 13 additions & 16 deletions lib/faker/measurement.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
module Faker
class Measurement < Base
class << self
ALL = 'all'.freeze
NONE = 'none'.freeze

def height(amount = rand(10))
ensure_valid_amount(amount)

Expand Down Expand Up @@ -63,63 +60,63 @@ def weight_none
def metric_height(amount = rand(10))
ensure_valid_amount(amount)

"#{amount} #{check_for_plural(fetch('measurement.height'), amount)}"
"#{amount} #{check_for_plural(fetch('measurement.metric_height'), amount)}"
end

def metric_height_all
make_plural(fetch('measurement.height'))
make_plural(fetch('measurement.metric_height'))
end

def metric_height_none
fetch('measurement.height')
fetch('measurement.metric_height')
end

def metric_length(amount = rand(10))
ensure_valid_amount(amount)

"#{amount} #{check_for_plural(fetch('measurement.length'), amount)}"
"#{amount} #{check_for_plural(fetch('measurement.metric_length'), amount)}"
end

def metric_length_all
make_plural(fetch('measurement.length'))
make_plural(fetch('measurement.metric_length'))
end

def metric_length_none
fetch('measurement.height')
fetch('measurement.metric_length')
end

def metric_volume(amount = rand(10))
ensure_valid_amount(amount)

"#{amount} #{check_for_plural(fetch('measurement.volume'), amount)}"
"#{amount} #{check_for_plural(fetch('measurement.metric_volume'), amount)}"
end

def metric_volume_all
make_plural(fetch('measurement.volume'))
make_plural(fetch('measurement.metric_volume'))
end

def metric_volume_none
fetch('measurement.volume')
fetch('measurement.metric_volume')
end

def metric_weight(amount = rand(10))
ensure_valid_amount(amount)

"#{amount} #{check_for_plural(fetch('measurement.weight'), amount)}"
"#{amount} #{check_for_plural(fetch('measurement.metric_weight'), amount)}"
end

def metric_weight_all
make_plural(fetch('measurement.weight'))
make_plural(fetch('measurement.metric_weight'))
end

def metric_weight_none
fetch('measurement.weight')
fetch('measurement.metric_weight')
end

private

def ensure_valid_amount(amount)
raise ArgumentError, 'invalid amount' unless amount == NONE || amount == ALL || amount.is_a?(Integer) || amount.is_a?(Float)
raise ArgumentError, 'invalid amount' unless amount.is_a?(Integer) || amount.is_a?(Float)
end

def check_for_plural(text, number)
Expand Down
28 changes: 18 additions & 10 deletions test/test_faker_measurement.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def setup

def height
assert @tester.height.match(/\d\s[a-z]/)
assert @tester.height(1).match(/\d\s[a-z]/)
end

def height_all
Expand Down Expand Up @@ -48,56 +49,63 @@ def volume_none

def weight
assert @tester.weight.match(/\d\s[a-z]/)
assert @tester.weight('all').match(/\d\s[a-z]/)
assert @tester.weight('none').match(/\d\s[a-z]/)
end

def weight_none
assert @tester.weight_none.match(/\d\s[a-z]/)
end

def weight_all
assert @tester.weight_all.match(/\d\s[a-z]/)
end

def metric_height
assert @tester.metric_height.match(/\d\s[a-z]/)
end

def metric_height_all
assert @tester.metric_height('all').match(/\d\s[a-z]/)
assert @tester.metric_height_all.match(/\d\s[a-z]/)
end

def metric_height_none
assert @tester.metric_height('none').match(/\d\s[a-z]/)
assert @tester.metric_height_none.match(/\d\s[a-z]/)
end

def metric_length
assert @tester.metric_length.match(/\d\s[a-z]/)
end

def metric_length_all
assert @tester.metric_length('all').match(/\d\s[a-z]/)
assert @tester.metric_length_all.match(/\d\s[a-z]/)
end

def metric_length_none
assert @tester.metric_length('none').match(/\d\s[a-z]/)
assert @tester.metric_length_none.match(/\d\s[a-z]/)
end

def metric_volume
assert @tester.metric_volume.match(/\d\s[a-z]/)
end

def metric_volume_all
assert @tester.metric_volume('all').match(/\d\s[a-z]/)
assert @tester.metric_volume_all.match(/\d\s[a-z]/)
end

def metric_volume_none
assert @tester.metric_volume('none').match(/\d\s[a-z]/)
assert @tester.metric_volume_none.match(/\d\s[a-z]/)
end

def metric_weight
assert @tester.metric_weight.match(/\d\s[a-z]/)
assert @tester.metric_weight(1).match(/\d\s[a-z]/)
end

def metric_weight_all
assert @tester.metric_weight.match(/\d\s[a-z]/)
assert @tester.metric_weight_all.match(/\d\s[a-z]/)
end

def metric_weight_none
assert @tester.metric_weight.match(/\d\s[a-z]/)
assert @tester.metric_weight_none.match(/\d\s[a-z]/)
end

def test_invalid_amount_error
Expand Down

0 comments on commit 1aa3435

Please sign in to comment.