forked from utopia-php/database
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueryTest.php
More file actions
124 lines (88 loc) · 4.03 KB
/
QueryTest.php
File metadata and controls
124 lines (88 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace Utopia\Tests;
use Utopia\Database\Query;
use PHPUnit\Framework\TestCase;
class QueryTest extends TestCase
{
public function setUp(): void
{
}
public function tearDown(): void
{
}
public function testCreate(): void
{
$query = new Query('title', 'equal', ['Iron Man']);
$this->assertEquals('title', $query->getAttribute());
$this->assertEquals('equal', $query->getOperator());
$this->assertContains('Iron Man', $query->getValues());
}
public function testParse()
{
$query = Query::parse('title.equal("Iron Man")');
$this->assertEquals('title', $query->getAttribute());
$this->assertEquals('equal', $query->getOperator());
$this->assertContains('Iron Man', $query->getValues());
$query = Query::parse('year.lesser(2001)');
$this->assertEquals('year', $query->getAttribute());
$this->assertEquals('lesser', $query->getOperator());
$this->assertContains(2001, $query->getValues());
$query = Query::parse('published.equal(true)');
$this->assertEquals('published', $query->getAttribute());
$this->assertEquals('equal', $query->getOperator());
$this->assertContains(true, $query->getValues());
$query = Query::parse('published.equal(false)');
$this->assertEquals('published', $query->getAttribute());
$this->assertEquals('equal', $query->getOperator());
$this->assertContains(false, $query->getValues());
$query = Query::parse('actors.notContains( " Johnny Depp ", " Brad Pitt" , "Al Pacino")');
$this->assertEquals('actors', $query->getAttribute());
$this->assertEquals('notContains', $query->getOperator());
$this->assertContains(' Johnny Depp ', $query->getValues());
$this->assertContains(' Brad Pitt', $query->getValues());
$this->assertContains('Al Pacino', $query->getValues());
$query = Query::parse('actors.equal("Brad Pitt", "Johnny Depp")');
$this->assertEquals('actors', $query->getAttribute());
$this->assertEquals('equal', $query->getOperator());
$this->assertContains('Brad Pitt', $query->getValues());
$this->assertContains('Johnny Depp', $query->getValues());
$query = Query::parse('writers.contains("Tim O\'Reilly")');
$this->assertEquals('writers', $query->getAttribute());
$this->assertEquals('contains', $query->getOperator());
$this->assertContains("Tim O'Reilly", $query->getValues());
$query = Query::parse('score.greater(8.5)');
$this->assertEquals('score', $query->getAttribute());
$this->assertEquals('greater', $query->getOperator());
$this->assertContains(8.5, $query->getValues());
$query = Query::parse('director.notEqual("null")');
$this->assertEquals('director', $query->getAttribute());
$this->assertEquals('notEqual', $query->getOperator());
$this->assertContains('null', $query->getValues());
$query = Query::parse('director.notEqual(null)');
$this->assertEquals('director', $query->getAttribute());
$this->assertEquals('notEqual', $query->getOperator());
$this->assertContains(null, $query->getValues());
}
public function testGetAttribute()
{
$query = Query::parse('title.equal("Iron Man")');
$this->assertEquals('title', $query->getAttribute());
}
public function testGetOperator()
{
$query = Query::parse('title.equal("Iron Man")');
$this->assertEquals('equal', $query->getOperator());
}
public function testGetValue()
{
$query = Query::parse('title.equal("Iron Man")');
$this->assertContains('Iron Man', $query->getValues());
}
public function testGetQuery()
{
$query = Query::parse('title.equal("Iron Man")')->getQuery();
$this->assertEquals('title', $query['attribute']);
$this->assertEquals('equal', $query['operator']);
$this->assertContains('Iron Man', $query['values']);
}
}