@@ -27,13 +27,13 @@ public function tearDown()
2727
2828 public function provideDateTestObjects ()
2929 {
30- // 4 days ago
3130 $ obj = new ParseObject ('TestObject ' );
3231 $ obj ->save ();
3332
3433 // use server date
3534 $ baselineDate = $ obj ->getCreatedAt ()->format ('m/d/Y H:i:s ' );
3635
36+ // 4 days ago
3737 $ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
3838 $ date ->sub ((new \DateInterval ('P4D ' )));
3939 $ obj ->set ('date ' , $ date );
@@ -65,6 +65,46 @@ public function provideDateTestObjects()
6565 $ obj ->save ();
6666 }
6767
68+ public function provideExtendedDateTestObjects ()
69+ {
70+ $ obj = new ParseObject ('TestObject ' );
71+ $ obj ->save ();
72+
73+ // use server date
74+ $ baselineDate = $ obj ->getCreatedAt ()->format ('m/d/Y H:i:s ' );
75+
76+ // 1 year 20 days ago
77+ $ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
78+ $ date ->sub ((new \DateInterval ('P01Y20D ' )));
79+ $ obj ->set ('date ' , $ date );
80+ $ obj ->set ('name ' , 'obj1 ' );
81+ $ obj ->save ();
82+
83+ // 1 year 8 days ago
84+ $ obj = new ParseObject ('TestObject ' );
85+ $ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
86+ $ date ->sub ((new \DateInterval ('P01Y8D ' )));
87+ $ obj ->set ('date ' , $ date );
88+ $ obj ->set ('name ' , 'obj2 ' );
89+ $ obj ->save ();
90+
91+ // 1 year 8 days from now
92+ $ obj = new ParseObject ('TestObject ' );
93+ $ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
94+ $ date ->add ((new \DateInterval ('P01Y8D ' )));
95+ $ obj ->set ('date ' , $ date );
96+ $ obj ->set ('name ' , 'obj3 ' );
97+ $ obj ->save ();
98+
99+ // 1 year 20 days from now
100+ $ obj = new ParseObject ('TestObject ' );
101+ $ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
102+ $ date ->add ((new \DateInterval ('P01Y20D ' )));
103+ $ obj ->set ('date ' , $ date );
104+ $ obj ->set ('name ' , 'obj4 ' );
105+ $ obj ->save ();
106+ }
107+
68108 /**
69109 * @group relative-time-queries
70110 */
@@ -203,7 +243,7 @@ public function testRelativeTimeUnits()
203243
204244 // shorthand units
205245 $ query = new ParseQuery ('TestObject ' );
206- $ query ->greaterThanRelativeTime ('date ' , 'in 3 days 2 hrs 15 mins 30 secs ' );
246+ $ query ->greaterThanRelativeTime ('date ' , 'in 3 d 2 hrs 15 mins 30 secs ' );
207247 $ this ->assertEquals (1 , $ query ->count ());
208248
209249 // singular units
@@ -213,10 +253,54 @@ public function testRelativeTimeUnits()
213253
214254 // singular shorthand units
215255 $ query = new ParseQuery ('TestObject ' );
216- $ query ->greaterThanRelativeTime ('date ' , 'in 3 days 1 hr 1 min 1 sec ' );
256+ $ query ->greaterThanRelativeTime ('date ' , 'in 3 d 1 hr 1 min 1 sec ' );
217257 $ this ->assertEquals (1 , $ query ->count ());
218258 }
219259
260+ /**
261+ * @group relative-time-queries
262+ */
263+ public function testLongRelativeTime ()
264+ {
265+ $ this ->provideExtendedDateTestObjects ();
266+
267+ $ query = new ParseQuery ('TestObject ' );
268+ $ query ->greaterThanRelativeTime ('date ' , 'in 1 year 2 weeks ' );
269+ $ this ->assertEquals (1 , $ query ->count ());
270+
271+ $ query = new ParseQuery ('TestObject ' );
272+ $ query ->lessThanRelativeTime ('date ' , '1 yr 2 wks ago ' );
273+ $ this ->assertEquals (1 , $ query ->count ());
274+
275+ $ query = new ParseQuery ('TestObject ' );
276+ $ query ->lessThanRelativeTime ('date ' , '1 year 3 weeks ago ' );
277+ $ this ->assertEquals (0 , $ query ->count ());
278+
279+ $ query = new ParseQuery ('TestObject ' );
280+ $ query ->greaterThanRelativeTime ('date ' , 'in 1 year 3 weeks ' );
281+ $ this ->assertEquals (0 , $ query ->count ());
282+
283+ $ query = new ParseQuery ('TestObject ' );
284+ $ query ->greaterThanRelativeTime ('date ' , '1 year 3 weeks ago ' );
285+ $ this ->assertEquals (4 , $ query ->count ());
286+ }
287+
288+ /**
289+ * @group relative-time-queries
290+ */
291+ public function testNowRelativeTime ()
292+ {
293+ $ this ->provideDateTestObjects ();
294+
295+ $ query = new ParseQuery ('TestObject ' );
296+ $ query ->greaterThanRelativeTime ('date ' , 'now ' );
297+ $ this ->assertEquals (2 , $ query ->count ());
298+
299+ $ query = new ParseQuery ('TestObject ' );
300+ $ query ->lessThanRelativeTime ('date ' , 'now ' );
301+ $ this ->assertEquals (2 , $ query ->count ());
302+ }
303+
220304 /**
221305 * @group relative-time-queries
222306 */
0 commit comments