/** * @covers GravityView_frontend::process_search_dates() */ public function test_process_search_dates() { $date_range_2014 = array('start_date' => '2014-01-01', 'end_date' => '2014-12-31'); $date_range_june_2015 = array('start_date' => '2015-06-01', 'end_date' => '2015-06-30'); $date_range_2015 = array('start_date' => '2015-01-01', 'end_date' => '2015-12-31'); $search_dates = GravityView_frontend::process_search_dates(array(), $date_range_2015); $this->assertEquals($date_range_2015, $search_dates, 'No View settings to override; use the passed array'); $search_dates = GravityView_frontend::process_search_dates($date_range_2014, $date_range_2015); $this->assertEquals(array('start_date' => $date_range_2015['start_date'], 'end_date' => $date_range_2014['end_date']), $search_dates, 'The start date is after the end date, which logs a GravityView error but doesn\'t throw any exceptions. This is expected behavior.'); $search_dates = GravityView_frontend::process_search_dates($date_range_2015, $date_range_june_2015); $this->assertEquals($date_range_june_2015, $search_dates, 'The 2015 June passed values are all inside 2015 View settings. Use the passed values.'); $yesterday = date('Y-m-d H:i:s', strtotime('yesterday')); $three_days_ago_ymd = date('Y-m-d', strtotime('3 days ago')); $one_month_ago = date('Y-m-d H:i:s', strtotime('-1 month')); $relative_dates = array('start_date' => '-1 month', 'end_date' => 'yesterday'); $search_dates = GravityView_frontend::process_search_dates($relative_dates); $this->assertEquals(array('start_date' => $one_month_ago, 'end_date' => $yesterday), $search_dates, 'Make sure the relative dates are formatted in Y-m-d H:i:s format'); $search_dates = GravityView_frontend::process_search_dates($relative_dates, array('end_date' => $three_days_ago_ymd)); $this->assertEquals(array('start_date' => $one_month_ago, 'end_date' => $three_days_ago_ymd), $search_dates, 'end_date overridden'); }