@@ -27,13 +27,13 @@ public function tearDown()
27
27
28
28
public function provideDateTestObjects ()
29
29
{
30
- // 4 days ago
31
30
$ obj = new ParseObject ('TestObject ' );
32
31
$ obj ->save ();
33
32
34
33
// use server date
35
34
$ baselineDate = $ obj ->getCreatedAt ()->format ('m/d/Y H:i:s ' );
36
35
36
+ // 4 days ago
37
37
$ date = \DateTime::createFromFormat ('m/d/Y H:i:s ' , $ baselineDate );
38
38
$ date ->sub ((new \DateInterval ('P4D ' )));
39
39
$ obj ->set ('date ' , $ date );
@@ -65,6 +65,46 @@ public function provideDateTestObjects()
65
65
$ obj ->save ();
66
66
}
67
67
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
+
68
108
/**
69
109
* @group relative-time-queries
70
110
*/
@@ -203,7 +243,7 @@ public function testRelativeTimeUnits()
203
243
204
244
// shorthand units
205
245
$ 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 ' );
207
247
$ this ->assertEquals (1 , $ query ->count ());
208
248
209
249
// singular units
@@ -213,10 +253,54 @@ public function testRelativeTimeUnits()
213
253
214
254
// singular shorthand units
215
255
$ 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 ' );
217
257
$ this ->assertEquals (1 , $ query ->count ());
218
258
}
219
259
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
+
220
304
/**
221
305
* @group relative-time-queries
222
306
*/
0 commit comments