forked from etsy/411
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestHelper.php
More file actions
66 lines (56 loc) · 2.06 KB
/
Copy pathTestHelper.php
File metadata and controls
66 lines (56 loc) · 2.06 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
<?php
class TestHelper {
public static function setupDB() {
FOO\DB::connect('sqlite::memory:', null, null);
$schema_file = __DIR__ . '/../db.sql';
$stmts = explode(';', file_get_contents($schema_file));
foreach($stmts as $stmt) {
$stmt = trim($stmt);
if(strlen($stmt) == 0) {
continue;
}
FOO\DB::query($stmt);
}
FOO\Cookie::setWrite(false);
FOO\SiteFinder::clearSite();
}
public static function teardownDB() {
FOO\Auth::setUser(null);
FOO\Cookie::setWrite(true);
FOO\DB::disconnect();
}
public static function populateDB($arr) {
foreach($arr as $row) {
$sql = sprintf('INSERT INTO `%s` VALUES %s', $row[0], FOO\DB::inPlaceholder(count($row) - 1));
FOO\DB::query($sql, array_slice($row, 1), FOO\DB::CNT);
}
}
public static function populateUsers() {
self::populateDB([
[FOO\User::$TABLE, 1, 0, 'admin', 'Admin', '', 'test@test.com', 'UTC', true, '', 'a', 0, 0, 0],
[FOO\User::$TABLE, 2, 0, 'user', 'User', '', 'test@test.com', 'UTC', false, '', 'u', 0, 0, 0],
]);
}
public static function becomeAdmin() {
$user = FOO\UserFinder::getById(1);
FOO\Auth::setUser($user);
}
public static function becomeUser() {
$user = FOO\UserFinder::getById(2);
FOO\Auth::setUser($user);
}
public static function populateSite() {
self::populateDB([
[FOO\Site::$TABLE, 1, 'FOO', '411', 0, 0, 0, 0],
]);
}
public static function enableSite() {
FOO\SiteFinder::setSite(FOO\Sitefinder::getById(1));
}
public static function invokeMethod(&$object, $methodName, array $parameters=[]) {
$reflection = new \ReflectionClass(is_string($object) ? $object:get_class($object));
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invokeArgs($method->isStatic() ? null:$object, $parameters);
}
}