Skip to content

Commit

Permalink
Add collectible devices (#2382)
Browse files Browse the repository at this point in the history
  • Loading branch information
boardfish committed Sep 6, 2021
1 parent d6e5430 commit 1a538b8
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 1 deletion.
21 changes: 20 additions & 1 deletion lib/faker/japanese_media/kamen_rider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,19 @@ def series(*eras)
from_eras(*eras, field: :series)
end

##
# Produces the name of a collectible device from a Kamen Rider series.
#
# @return [String]
#
# @example
# Faker::JapaneseMedia::KamenRider.collectible_device #=> "Vistamp"
#
# @faker.version next
def collectible_device(*eras)
from_eras(*eras, field: :collectible_devices) { |e| e.delete(:showa) }
end

private

def eras
Expand All @@ -59,11 +72,17 @@ def eras
def from_eras(*input_eras, field:)
selected_eras = (ERAS & input_eras).yield_self do |selected|
selected.empty? ? eras : selected
end
end.dup
yield(selected_eras) if block_given?

raise UnavailableInEra, "#{field} is unavailable in the selected eras." if selected_eras.empty?

selected_eras.sample.yield_self do |era|
fetch("kamen_rider.#{era}.#{field}")
end
end

class UnavailableInEra < StandardError; end
end
end
end
Expand Down
28 changes: 28 additions & 0 deletions lib/locales/en/kamen_rider.yml
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,30 @@ en:
- Kagen
- Jogen
- Tsukuyomi
collectible_devices:
- Advent Card
- Mission Memory
- Rouse Card
- Disk Animal
- Zecter
- Rider Ticket
- Fuestle
- Rider Car
- Gaia Memory
- O Medal
- Astroswitch
- Wizard Ring
- Lockseed
- Shift Car
- Signal Bike
- Viral Core
- Ghost Eyecon
- Rider Gashat
- Energy Item
- Fullbottle
- Sclashjelly
- Ridewatch
- Miridewatch
reiwa:
series: ["Kamen Rider Zero-One", "Kamen Rider Saber", "Kamen Rider Revice"]
kamen_riders: ["Kamen Rider Zero-One", "Kamen Rider Vulcan", "Kamen Rider Valkyrie", "Kamen Rider Horobi", "Kamen Rider Jin", "Kamen Rider Ikazuchi", "Kamen Rider ZeroZero-One", "Kamen Rider Ichi-Gata", "Kamen Rider Thouser", "Kamen Rider Ark-Zero", "Kamen Rider Naki", "Kamen Rider Eden", "Kamen Rider Abaddon", "Kamen Rider Lucifer", "Kamen Rider Zaia", "Kamen Rider MetsubouJinrai", "Kamen Rider Saber", "Kamen Rider Calibur", "Kamen Rider Blades", "Kamen Rider Buster", "Kamen Rider Espada", "Kamen Rider Kenzan", "Kamen Rider Slash", "Kamen Rider Falchion", "Kamen Rider Saikou", "Kamen Rider Sabela", "Kamen Rider Durendal", "Kamen Rider Solomon", "Kamen Rider Storious", "Kamen Rider Revi", "Kamen Rider Vice"]
Expand Down Expand Up @@ -238,3 +262,7 @@ en:
- Storious
- Ikki Igarashi
- Vice
collectible_devices:
- Progrisekey
- Wonder Ride Book
- Vistamp
21 changes: 21 additions & 0 deletions test/faker/japanese_media/test_faker_kamen_rider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,25 @@ def test_series_reiwa
def test_series_heisei_reiwa
assert @tester.series(:heisei, :reiwa).match(/\w+\.?/)
end

def test_collectible_device_all
assert @tester.collectible_device.match(/\w+\.?/)
end

# The Showa era had not introduced the concept of collectible devices.
def test_collectible_device_showa
assert_raise('Faker::JapaneseMedia::KamenRider::UnavailableInEra') { @tester.collectible_device(:showa) }
end

def test_collectible_device_heisei
assert @tester.collectible_device(:heisei).match(/\w+\.?/)
end

def test_collectible_device_reiwa
assert @tester.collectible_device(:reiwa).match(/\w+\.?/)
end

def test_collectible_device_heisei_reiwa
assert @tester.collectible_device(:heisei, :reiwa).match(/\w+\.?/)
end
end

0 comments on commit 1a538b8

Please sign in to comment.