Module: CustomDateHelpers
- Defined in:
- lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb
Instance Method Summary collapse
- #beginning_or_end(first_or_last) ⇒ Object
- #calculated_date_from(date_rule) ⇒ Object
- #date_from_phrase(first_or_last, month) ⇒ Object
- #default_date_format ⇒ Object
- #first_and_last_date_rule(phrase) ⇒ Object
- #format_for_strftime(string) ⇒ Object
Instance Method Details
#beginning_or_end(first_or_last) ⇒ Object
41 42 43 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 41 def beginning_or_end(first_or_last) first_or_last == 'first' ? :beginning_of_month : :end_of_month end |
#calculated_date_from(date_rule) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 2 def calculated_date_from(date_rule) # Takes strings like "Today's Date", "4 days ago", "5 days since" etc. and # returns a calculated date in the default_date_format potential_date_formats = /[0-9]+\/[0-9]+\/[0-9]+/x first_and_last_regex = /the (nearest|first|last) (.*)/ date = case date_rule when potential_date_formats date_rule when /Today's Date/i Date.today when /(\d+) days (ago|since)/i number_of_days = $1.to_i rescue nil time_travel_method = $2.downcase.to_sym raise "Invalid number of days. Please enter a valid number" if number_of_days.nil? number_of_days.send(:days).send(time_travel_method) when first_and_last_regex first_and_last_date_rule(rule) end date.respond_to?(:strftime) ? date.strftime(default_date_format) : date end |
#date_from_phrase(first_or_last, month) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 49 def date_from_phrase(first_or_last, month) month_name = month.downcase.camelize month = Date::MONTHNAMES.index(month_name) if month.nil? raise "Oops you provided an invalid month name. Please use a valid month name from January to December" end date = Date.parse("#{month}/1") #mm/dd in current year date = date.send(:end_of_month) if first_or_last == 'last' end |
#default_date_format ⇒ Object
45 46 47 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 45 def default_date_format format_for_strftime SimpliTest.config_settings['DEFAULT_DATE_FORMAT'] end |
#first_and_last_date_rule(phrase) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 23 def first_and_last_date_rule(phrase) # Takes a phrase like "the first day of the month" or "last day of the # previous month" and returns a calculated date in the default_date_format case phrase when /the (first|last) day of the month/i Date.today.send(beginning_or_end($1)) when /the (first|last) day of next month/i 1.month.since.send(beginning_or_end($1)) when /the (first|last) day of previous month/i 1.month.ago.send(beginning_or_end($1)) when /the (first|last) day of (.*)/i date_from_phrase($1, $2) when /the nearest (first|last) day of month/i rule = Date.today.day >= 15 ? "the #{$1} day of next month" : "the #{$1} day of the month" calculated_date_from(rule) end end |
#format_for_strftime(string) ⇒ Object
59 60 61 |
# File 'lib/SimpliTest/helpers/step_helpers/custom_date_helpers.rb', line 59 def format_for_strftime(string) string.gsub('mm', '%m').gsub('dd', '%d').gsub('yyyy', '%Y').gsub('yy', '%y') end |