Skip to content

Commit d788156

Browse files
committed
Add monthTravel func to fix date issues with timetravel last day of months
1 parent 6261684 commit d788156

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lib/squcumber-postgres/support/matchers.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def values_match(actual, expected)
1919
end
2020

2121
def timetravel(date, i, method); i > 0 ? timetravel(date.send(method.to_sym), i - 1, method) : date; end
22+
def monthtravel(date, i); i != 0 ? Date.new(date.year, date.month + i, -1) : date; end
2223

2324
def convert_mock_values(mock_data)
2425
mock_data.map do |entry|
@@ -65,16 +66,16 @@ def convert_mock_value(value)
6566
when /tomorrow/
6667
timetravel(Date.today, 1, :next_day)
6768
when /last month/
68-
timetravel(Date.today, 1, :prev_month)
69+
monthtravel(Date.today, -1)
6970
when /next month/
70-
timetravel(Date.today, 1, :next_month)
71+
monthtravel(Date.today, 1)
7172
when /last year/
7273
timetravel(Date.today, 1, :prev_year)
7374
when /next year/
7475
timetravel(Date.today, 1, :next_year)
7576
when /\s*\d+\s+month(s)?\s+ago\s*?/
7677
number_of_months = value.match(/\d+/)[0].to_i
77-
timetravel(Date.today, number_of_months, :prev_month)
78+
monthtravel(Date.today, number_of_months * -1)
7879
when /\s*\d+\s+day(s)?\s+ago\s*/
7980
number_of_days = value.match(/\d+/)[0].to_i
8081
timetravel(Date.today, number_of_days, :prev_day)

0 commit comments

Comments
 (0)