Class: Synthra::Types::DateTime::DatetimeType
- Defined in:
- lib/synthra/types/date_time/dates.rb
Overview
DatetimeType type
Instance Method Summary collapse
- #generate_edge(rng, context, args) ⇒ Object
- #generate_invalid(rng, context, args) ⇒ Object
-
#generate_random(rng, context, args) ⇒ String
Generate random datetime.
Instance Method Details
#generate_edge(rng, context, args) ⇒ Object
70 71 72 |
# File 'lib/synthra/types/date_time/dates.rb', line 70 def generate_edge(rng, context, args) ["1970-01-01T00:00:00Z", "2099-12-31T23:59:59Z"].sample(random: rng.instance_variable_get(:@random)) end |
#generate_invalid(rng, context, args) ⇒ Object
74 75 76 |
# File 'lib/synthra/types/date_time/dates.rb', line 74 def generate_invalid(rng, context, args) [nil, "not a datetime", 123, [], {}].sample(random: rng.instance_variable_get(:@random)) end |
#generate_random(rng, context, args) ⇒ String
Generate random datetime
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/synthra/types/date_time/dates.rb', line 49 def generate_random(rng, context, args) format_type = args[:format] || :standard reference_date = TimeTravel.anchor_date || Date.today date_range = args[:date_range] || (reference_date - 365..reference_date + 365) # Generate date date = rng.sample(date_range.to_a) # Generate time hour = rng.int(0, 23) minute = rng.int(0, 59) second = rng.int(0, 59) case format_type when :iso8601, :rfc3339 "#{date}T#{format('%02d:%02d:%02d', hour, minute, second)}Z" else # :standard "#{date} #{format('%02d:%02d:%02d', hour, minute, second)}" end end |