Skip to content

Commit dba7120

Browse files
committed
Adding facade
1 parent 955b214 commit dba7120

File tree

6 files changed

+378
-299
lines changed

6 files changed

+378
-299
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
}
2222
},
2323
"minimum-stability": "dev"
24-
}
24+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php namespace Jenssegers\Mongodb\Facades;
2+
3+
use Illuminate\Support\Facades\Facade;
4+
5+
class MongoDB extends Facade {
6+
7+
/**
8+
* Get the registered name of the component.
9+
*
10+
* @return string
11+
*/
12+
protected static function getFacadeAccessor()
13+
{
14+
return 'mongodb';
15+
}
16+
17+
}

tests/ModelQueryTest.php

Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
1+
<?php
2+
require_once('vendor/autoload.php');
3+
require_once('models/User.php');
4+
5+
use Jenssegers\Mongodb\Connection;
6+
use Jenssegers\Mongodb\Model;
7+
use Jenssegers\Mongodb\DatabaseManager;
8+
9+
class ModelQueryTest extends PHPUnit_Framework_TestCase {
10+
11+
public function setUp()
12+
{
13+
include('tests/app.php');
14+
15+
// test data
16+
User::create(array('name' => 'John Doe', 'age' => 35, 'title' => 'admin'));
17+
User::create(array('name' => 'Jane Doe', 'age' => 33, 'title' => 'admin'));
18+
User::create(array('name' => 'Harry Hoe', 'age' => 13, 'title' => 'user'));
19+
User::create(array('name' => 'Robert Roe', 'age' => 37, 'title' => 'user'));
20+
User::create(array('name' => 'Mark Moe', 'age' => 23, 'title' => 'user'));
21+
User::create(array('name' => 'Brett Boe', 'age' => 35, 'title' => 'user'));
22+
User::create(array('name' => 'Tommy Toe', 'age' => 33, 'title' => 'user'));
23+
User::create(array('name' => 'Yvonne Yoe', 'age' => 35, 'title' => 'admin'));
24+
User::create(array('name' => 'Error', 'age' => null, 'title' => null));
25+
}
26+
27+
public function tearDown()
28+
{
29+
User::truncate();
30+
}
31+
32+
public function testGet()
33+
{
34+
$users = User::get();
35+
36+
$this->assertEquals(9, count($users));
37+
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $users[0]);
38+
}
39+
40+
public function testFirst()
41+
{
42+
$user = User::get()->first();
43+
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
44+
$this->assertEquals('John Doe', $user->name);
45+
}
46+
47+
public function testWhere()
48+
{
49+
$users = User::where('age', 35)->get();
50+
$this->assertEquals(3, count($users));
51+
52+
$users = User::where('age', '=', 35)->get();
53+
$this->assertEquals(3, count($users));
54+
55+
$users = User::where('age', '>=', 35)->get();
56+
$this->assertEquals(4, count($users));
57+
58+
$users = User::where('age', '<=', 18)->get();
59+
$this->assertEquals(1, count($users));
60+
61+
$users = User::where('age', '!=', 35)->get();
62+
$this->assertEquals(6, count($users));
63+
64+
$users = User::where('age', '<>', 35)->get();
65+
$this->assertEquals(6, count($users));
66+
}
67+
68+
public function testAndWhere()
69+
{
70+
$users = User::where('age', 35)->where('title', 'admin')->get();
71+
$this->assertEquals(2, count($users));
72+
73+
$users = User::where('age', '>=', 35)->where('title', 'user')->get();
74+
$this->assertEquals(2, count($users));
75+
}
76+
77+
public function testLike()
78+
{
79+
$users = User::where('name', 'like', '%doe')->get();
80+
$this->assertEquals(2, count($users));
81+
82+
$users = User::where('name', 'like', '%y%')->get();
83+
$this->assertEquals(3, count($users));
84+
85+
$users = User::where('name', 'like', 't%')->get();
86+
$this->assertEquals(1, count($users));
87+
}
88+
89+
public function testPluck()
90+
{
91+
$name = User::where('name', 'John Doe')->pluck('name');
92+
$this->assertEquals('John Doe', $name);
93+
}
94+
95+
public function testList()
96+
{
97+
$list = User::lists('title');
98+
$this->assertEquals(9, count($list));
99+
$this->assertEquals('admin', $list[0]);
100+
101+
$list = User::lists('title', 'name');
102+
$this->assertEquals(9, count($list));
103+
$this->assertEquals('John Doe', key($list));
104+
$this->assertEquals('admin', $list['John Doe']);
105+
}
106+
107+
public function testSelect()
108+
{
109+
$user = User::select('name')->first();
110+
111+
$this->assertEquals('John Doe', $user->name);
112+
$this->assertEquals(null, $user->age);
113+
114+
$user = User::select('name', 'title')->first();
115+
116+
$this->assertEquals('John Doe', $user->name);
117+
$this->assertEquals('admin', $user->title);
118+
$this->assertEquals(null, $user->age);
119+
120+
$user = User::get(array('name'))->first();
121+
122+
$this->assertEquals('John Doe', $user->name);
123+
$this->assertEquals(null, $user->age);
124+
}
125+
126+
public function testOrWhere()
127+
{
128+
$users = User::where('age', 13)->orWhere('title', 'admin')->get();
129+
$this->assertEquals(4, count($users));
130+
131+
$users = User::where('age', 13)->orWhere('age', 23)->get();
132+
$this->assertEquals(2, count($users));
133+
}
134+
135+
public function testBetween()
136+
{
137+
$users = User::whereBetween('age', array(0, 25))->get();
138+
$this->assertEquals(2, count($users));
139+
140+
$users = User::whereBetween('age', array(13, 23))->get();
141+
$this->assertEquals(2, count($users));
142+
}
143+
144+
public function testIn()
145+
{
146+
$users = User::whereIn('age', array(13, 23))->get();
147+
$this->assertEquals(2, count($users));
148+
149+
$users = User::whereIn('age', array(33, 35, 13))->get();
150+
$this->assertEquals(6, count($users));
151+
152+
$users = User::whereNotIn('age', array(33, 35))->get();
153+
$this->assertEquals(4, count($users));
154+
155+
$users = User::whereNotNull('age')
156+
->whereNotIn('age', array(33, 35))->get();
157+
$this->assertEquals(3, count($users));
158+
}
159+
160+
public function testWhereNull()
161+
{
162+
$users = User::whereNull('age')->get();
163+
$this->assertEquals(1, count($users));
164+
}
165+
166+
public function testWhereNotNull()
167+
{
168+
$users = User::whereNotNull('age')->get();
169+
$this->assertEquals(8, count($users));
170+
}
171+
172+
public function testOrder()
173+
{
174+
$user = User::whereNotNull('age')->orderBy('age', 'asc')->first();
175+
$this->assertEquals(13, $user->age);
176+
177+
$user = User::whereNotNull('age')->orderBy('age', 'desc')->first();
178+
$this->assertEquals(37, $user->age);
179+
}
180+
181+
public function testTake()
182+
{
183+
$users = User::take(3)->get();
184+
$this->assertEquals(3, count($users));
185+
}
186+
187+
public function testOffset()
188+
{
189+
$users = User::skip(1)->take(2)->get();
190+
$this->assertEquals(2, count($users));
191+
$this->assertEquals('Jane Doe', $users[0]->name);
192+
}
193+
194+
public function testIncrements()
195+
{
196+
User::where('name', 'John Doe')->increment('age');
197+
User::where('name', 'John Doe')->increment('age', 2, array('title' => 'user'));
198+
199+
$user = User::where('name', 'John Doe')->first();
200+
$this->assertEquals(38, $user->age);
201+
$this->assertEquals('user', $user->title);
202+
203+
User::where('name', 'John Doe')->decrement('age');
204+
$num = User::where('name', 'John Doe')->decrement('age', 2, array('title' => 'admin'));
205+
206+
$user = User::where('name', 'John Doe')->first();
207+
$this->assertEquals(35, $user->age);
208+
$this->assertEquals('admin', $user->title);
209+
$this->assertEquals(1, $num);
210+
211+
User::increment('age');
212+
User::increment('age', 2);
213+
214+
$user = User::where('name', 'Mark Moe')->first();
215+
$this->assertEquals(26, $user->age);
216+
217+
User::decrement('age', 2);
218+
$num = User::decrement('age');
219+
220+
$user = User::where('name', 'Mark Moe')->first();
221+
$this->assertEquals(23, $user->age);
222+
$this->assertEquals(8, $num);
223+
}
224+
225+
public function testAggregates()
226+
{
227+
$this->assertEquals(9, User::count());
228+
$this->assertEquals(37, User::max('age'));
229+
$this->assertEquals(13, User::min('age'));
230+
$this->assertEquals(30.5, User::avg('age'));
231+
$this->assertEquals(244, User::sum('age'));
232+
233+
$this->assertEquals(35, User::where('title', 'admin')->max('age'));
234+
$this->assertEquals(37, User::where('title', 'user')->max('age'));
235+
236+
$this->assertEquals(33, User::where('title', 'admin')->min('age'));
237+
$this->assertEquals(13, User::where('title', 'user')->min('age'));
238+
}
239+
240+
public function testGroupBy()
241+
{
242+
$users = User::groupBy('title')->get();
243+
$this->assertEquals(3, count($users));
244+
245+
$users = User::groupBy('age')->get();
246+
$this->assertEquals(6, count($users));
247+
248+
$users = User::groupBy('age')->orderBy('age', 'desc')->get();
249+
$this->assertEquals(37, $users[0]->age);
250+
$this->assertEquals(35, $users[1]->age);
251+
$this->assertEquals(33, $users[2]->age);
252+
}
253+
254+
public function testSubquery()
255+
{
256+
$users = User::where('title', 'admin')->orWhere(function($query)
257+
{
258+
$query->where('name', 'Tommy Toe')
259+
->orWhere('name', 'Error');
260+
})
261+
->get();
262+
263+
$this->assertEquals(5, count($users));
264+
265+
$users = User::where('title', 'user')->where(function($query)
266+
{
267+
$query->where('age', 35)
268+
->orWhere('name', 'like', '%harry%');
269+
})
270+
->get();
271+
272+
$this->assertEquals(2, count($users));
273+
274+
$users = User::where('age', 35)->orWhere(function($query)
275+
{
276+
$query->where('title', 'admin')
277+
->orWhere('name', 'Error');
278+
})
279+
->get();
280+
281+
$this->assertEquals(5, count($users));
282+
}
283+
284+
public function testUpdate()
285+
{
286+
User::where('name', 'John Doe')
287+
->update(array('age' => 100));
288+
289+
$user = User::where('name', 'John Doe')->first();
290+
$this->assertEquals(100, $user->age);
291+
}
292+
293+
public function testDelete()
294+
{
295+
User::where('age', '>', 30)->delete();
296+
$this->assertEquals(3, User::count());
297+
}
298+
299+
public function testInsert()
300+
{
301+
User::insert(
302+
array('name' => 'Francois', 'age' => 59, 'title' => 'Senior')
303+
);
304+
305+
$this->assertEquals(10, User::count());
306+
307+
User::insert(array(
308+
array('name' => 'Gaston', 'age' => 60, 'title' => 'Senior'),
309+
array('name' => 'Jaques', 'age' => 61, 'title' => 'Senior')
310+
));
311+
312+
$this->assertEquals(12, User::count());
313+
}
314+
315+
public function testInsertGetId()
316+
{
317+
$id = User::insertGetId(
318+
array('name' => 'Gaston', 'age' => 60, 'title' => 'Senior')
319+
);
320+
321+
$this->assertEquals(10, User::count());
322+
$this->assertNotNull($id);
323+
$this->assertTrue(is_string($id));
324+
}
325+
326+
}

tests/ModelTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class ModelTest extends PHPUnit_Framework_TestCase {
1313
public function setUp()
1414
{
1515
include('tests/app.php');
16-
Model::setConnectionResolver(new DatabaseManager($app));
1716
}
1817

1918
public function tearDown()

0 commit comments

Comments
 (0)