lib/fakeit/openapi/example/string_example.rb in fakeit-0.1.5 vs lib/fakeit/openapi/example/string_example.rb in fakeit-0.2.0
- old
+ new
@@ -1,28 +1,63 @@
module Fakeit
module Openapi
module Example
- FORMAT_HANDLERS = {
+ STATIC_FORMAT_HANDLERS = {
+ 'uri' => -> { 'https://some.uri' },
+ 'uuid' => -> { '11111111-1111-1111-1111-111111111111' },
+ 'guid' => -> { '11111111-1111-1111-1111-111111111111' },
+ 'email' => -> { 'some@email.com' },
+ 'date' => -> { Date.today.iso8601 },
+ 'date-time' => lambda do
+ now = Time.now
+ Time.new(now.year, now.month, now.day, 0, 0, 0, now.utc_offset).iso8601
+ end
+ }.freeze
+
+ RANDOM_FORMAT_HANDLERS = {
'uri' => -> { Faker::Internet.url },
'uuid' => -> { SecureRandom.uuid },
'guid' => -> { SecureRandom.uuid },
'email' => -> { Faker::Internet.email },
'date' => -> { Faker::Date.backward(100).iso8601 },
'date-time' => -> { Faker::Time.backward(100).iso8601 }
}.freeze
- def string_example
+ def string_example(example_options)
+ example_options[:static] ? static_string_example : random_string_example
+ end
+
+ private
+
+ def static_string_example
+ Faker::Config.random = Random.new(1) # Fix seed for faker
+
+ if enum then enum.to_a.first
+ elsif pattern then Faker::Base.regexify(pattern)
+ elsif format then static_string_format
+ elsif length_constraint then static_string_with_length
+ else 'string'
+ end
+ end
+
+ def random_string_example
if enum then enum.to_a.sample
elsif pattern then Faker::Base.regexify(pattern)
- elsif format then string_format
+ elsif format then random_string_format
elsif length_constraint then string_with_length
else Faker::Book.title
end
end
- private
+ def static_string_with_length
+ '1' * max_string_length
+ end
+ def static_string_format
+ (STATIC_FORMAT_HANDLERS[format] || method(:unknown_format))[]
+ end
+
def length_constraint
minLength || maxLength
end
def string_with_length
@@ -35,11 +70,11 @@
def max_string_length
maxLength || min_string_length + 10
end
- def string_format
- (FORMAT_HANDLERS[format] || method(:unknown_format))[]
+ def random_string_format
+ (RANDOM_FORMAT_HANDLERS[format] || method(:unknown_format))[]
end
def unknown_format
Fakeit::Logger.warn("Unknown string format: #{format}")
'Unknown string format'