Skip to content

Commit 8be1697

Browse files
committed
Minor refactoring with DateTime filter functions. Finalize testing with FilterFactory.
1 parent 66b1cf6 commit 8be1697

18 files changed

+127
-80
lines changed

Test/ODataFilterFactoryTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,52 @@ public function testString() {
4545
}
4646

4747
public function testDate() {
48+
$filter = new \ODataQuery\Filter\ODataFilterFactory();
49+
$filter
50+
->now()
51+
->datetime()
52+
->equals(new DateTime('1/2/2015 8:00 PM EST'));
53+
$this->assertEquals('datetime(now()) eq 2015-01-02 20:00:00 EST', (string)$filter);
4854

55+
$filter
56+
->now()
57+
->day()
58+
->equals(8);
59+
$this->assertEquals('day(now()) eq 8', (string)$filter);
60+
61+
$filter->now();
62+
$filter->month()
63+
->greaterThan(6);
64+
$this->assertEquals('month(now()) gt 6', (string)$filter);
65+
66+
$filter->maxDateTime();
67+
$filter->year()
68+
->greaterThanEquals(2015);
69+
$this->assertEquals('year(maxdatetime()) ge 2015', (string)$filter);
70+
71+
$filter->minDateTime();
72+
$filter->hour()
73+
->lessThan(20);
74+
$this->assertEquals('hour(mindatetime()) lt 20', (string)$filter);
75+
76+
$filter->now();
77+
$filter->minute()
78+
->lessThanEquals(43);
79+
$this->assertEquals('minute(now()) le 43', (string)$filter);
80+
81+
$filter->now();
82+
$filter->second()
83+
->notEquals(20);
84+
$this->assertEquals('second(now()) ne 20', (string)$filter);
4985
}
5086

5187
public function testLambda() {
88+
$filter = new \ODataQuery\Filter\ODataFilterFactory('Items');
89+
$filter->any(new \ODataQuery\Filter\Operators\Logical\ODataGreaterThanEqualsOperator('Quantity', 10));
90+
$this->assertEquals('Items/any(d:d/Quantity ge 10)', (string)$filter);
5291

92+
$filter = new \ODataQuery\Filter\ODataFilterFactory('Items');
93+
$filter->all(new \ODataQuery\Filter\Operators\Logical\ODataGreaterThanEqualsOperator('Quantity', 10));
94+
$this->assertEquals('Items/all(d:d/Quantity ge 10)', (string)$filter);
5395
}
5496
}

src/Filter/ODataFilterFactory.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ public function any($value) {
276276
$this->property = new ODataAnyOperator($this->property, $value);
277277
return $this;
278278
}
279+
279280
public function all($value) {
280281
$this->property = new ODataAllOperator($this->property, $value);
281282
return $this;

src/Filter/Operators/Functional/DateTime/ODataDateOperator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
class ODataDateOperator extends ODataDateTimeOperator {
12+
class ODataDateOperator extends ODataDateTimeFilter {
1313
protected $format = 'Y-m-d';
1414
public function __construct($property = NULL) {
1515
parent::__construct('date', $property);
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: alexboyce
5+
* Date: 1/3/15
6+
* Time: 1:09 PM
7+
*/
8+
9+
namespace ODataQuery\Filter\Operators\Functional\DateTime;
10+
11+
12+
use ODataQuery\Filter\Operators\Functional\ODataComparableFunctionOperator;
13+
14+
abstract class ODataDateTimeFilter extends ODataComparableFunctionOperator {
15+
protected $format = 'Y-m-d H:i:s e';
16+
17+
public function __construct($operator = 'datetime', $property = NULL) {
18+
parent::__construct($operator, $property);
19+
}
20+
21+
public function equals($value, $isField = FALSE) {
22+
if ($value instanceof \DateTimeInterface) {
23+
$value = $value->format($this->format);
24+
$isField = TRUE;
25+
}
26+
return parent::equals($value, $isField);
27+
}
28+
29+
public function notEquals($value, $isField = FALSE) {
30+
if ($value instanceof \DateTimeInterface) {
31+
$value = $value->format($this->format);
32+
$isField = TRUE;
33+
}
34+
return parent::notEquals($value, $isField);
35+
}
36+
37+
public function lessThan($value, $isField = FALSE) {
38+
if ($value instanceof \DateTimeInterface) {
39+
$value = $value->format($this->format);
40+
$isField = TRUE;
41+
}
42+
return parent::lessThan($value, $isField);
43+
}
44+
45+
public function lessThanEquals($value, $isField = FALSE) {
46+
if ($value instanceof \DateTimeInterface) {
47+
$value = $value->format($this->format);
48+
$isField = TRUE;
49+
}
50+
return parent::lessThanEquals($value, $isField);
51+
}
52+
53+
public function greaterThan($value, $isField = FALSE) {
54+
if ($value instanceof \DateTimeInterface) {
55+
$value = $value->format($this->format);
56+
$isField = TRUE;
57+
}
58+
return parent::greaterThan($value, $isField);
59+
}
60+
61+
public function greaterThanEquals($value, $isField = FALSE) {
62+
if ($value instanceof \DateTimeInterface) {
63+
$value = $value->format($this->format);
64+
$isField = TRUE;
65+
}
66+
return parent::greaterThanEquals($value, $isField);
67+
}
68+
}

src/Filter/Operators/Functional/DateTime/ODataDateTimeOperator.php

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -9,60 +9,11 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
use ODataQuery\Filter\Operators\Functional\ODataComparableFunctionOperator;
1312

14-
class ODataDateTimeOperator extends ODataComparableFunctionOperator {
13+
class ODataDateTimeOperator extends ODataDateTimeFilter {
1514
protected $format = 'Y-m-d H:i:s e';
1615

1716
public function __construct($property = NULL) {
1817
parent::__construct('datetime', $property);
1918
}
20-
21-
public function equals($value, $isField = FALSE) {
22-
if ($value instanceof \DateTimeInterface) {
23-
$value = $value->format($this->format);
24-
$isField = TRUE;
25-
}
26-
return parent::equals($value, $isField);
27-
}
28-
29-
public function notEquals($value, $isField = FALSE) {
30-
if ($value instanceof \DateTimeInterface) {
31-
$value = $value->format($this->format);
32-
$isField = TRUE;
33-
}
34-
return parent::notEquals($value, $isField);
35-
}
36-
37-
public function lessThan($value, $isField = FALSE) {
38-
if ($value instanceof \DateTimeInterface) {
39-
$value = $value->format($this->format);
40-
$isField = TRUE;
41-
}
42-
return parent::lessThan($value, $isField);
43-
}
44-
45-
public function lessThanEquals($value, $isField = FALSE) {
46-
if ($value instanceof \DateTimeInterface) {
47-
$value = $value->format($this->format);
48-
$isField = TRUE;
49-
}
50-
return parent::lessThanEquals($value, $isField);
51-
}
52-
53-
public function greaterThan($value, $isField = FALSE) {
54-
if ($value instanceof \DateTimeInterface) {
55-
$value = $value->format($this->format);
56-
$isField = TRUE;
57-
}
58-
return parent::greaterThan($value, $isField);
59-
}
60-
61-
public function greaterThanEquals($value, $isField = FALSE) {
62-
if ($value instanceof \DateTimeInterface) {
63-
$value = $value->format($this->format);
64-
$isField = TRUE;
65-
}
66-
return parent::greaterThanEquals($value, $isField);
67-
}
6819
}

src/Filter/Operators/Functional/DateTime/ODataDayOperator.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
use ODataQuery\Filter\Operators\Functional\ODataComparableFunctionOperator;
13-
14-
class ODataDayOperator extends ODataComparableFunctionOperator{
12+
class ODataDayOperator extends ODataDateTimeFilter{
1513
public function __construct($property = NULL) {
1614
parent::__construct('day', $property);
1715
}

src/Filter/Operators/Functional/DateTime/ODataFractionalSecondsOperator.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
use ODataQuery\Filter\Operators\Functional\ODataComparableFunctionOperator;
13-
14-
class ODataFractionalSecondsOperator extends ODataComparableFunctionOperator {
12+
class ODataFractionalSecondsOperator extends ODataDateTimeFilter {
1513
public function __construct($property = NULL) {
1614
parent::__construct('fractionalseconds', $property);
1715
}

src/Filter/Operators/Functional/DateTime/ODataHourOperator.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
use ODataQuery\Filter\Operators\Functional\ODataComparableFunctionOperator;
1312

14-
class ODataHourOperator extends ODataComparableFunctionOperator {
13+
class ODataHourOperator extends ODataDateTimeFilter {
1514
public function __construct($property = NULL) {
1615
parent::__construct('hour', $property);
1716
}

src/Filter/Operators/Functional/DateTime/ODataMaxDateTimeOperator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
class ODataMaxDateTimeOperator extends ODataDateTimeOperator {
12+
class ODataMaxDateTimeOperator extends ODataDateTimeFilter {
1313
public function __construct() {
1414
parent::__construct('maxdatetime');
1515
}

src/Filter/Operators/Functional/DateTime/ODataMinDateTimeOperator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
namespace ODataQuery\Filter\Operators\Functional\DateTime;
1010

1111

12-
class ODataMinDateTimeOperator extends ODataDateTimeOperator {
12+
class ODataMinDateTimeOperator extends ODataDateTimeFilter {
1313
public function __construct() {
1414
parent::__construct('mindatetime');
1515
}

0 commit comments

Comments
 (0)