Skip to content

Commit 18f29c2

Browse files
committed
Corrects tests.
1 parent 20ae93e commit 18f29c2

File tree

3 files changed

+38
-35
lines changed

3 files changed

+38
-35
lines changed

app/controllers/api/Statements.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,12 @@ public function void() {
7474
}
7575

7676
private function getParam($param) {
77-
$value = json_decode(\LockerRequest::getParam($param), true);
78-
if ($value === null) {
77+
$param_value = \LockerRequest::getParam($param);
78+
$value = json_decode($param_value, true);
79+
if ($value === null && $param_value === null) {
7980
throw new Exceptions\Exception("Expected `$param` to be defined as a URL parameter.");
81+
} else if ($value === null) {
82+
throw new Exceptions\Exception("Expected the value of `$param` to be valid JSON in the URL parameter.");
8083
}
8184
return $value;
8285
}

app/locker/repository/Query/EloquentQueryRepository.php

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,25 @@ public function where($lrsId, array $filters) {
2525
case 'in': $statements->whereIn($filter[0], $filter[2]); break;
2626
case 'between': $statements->whereBetween($filter[0], [$filter[2], $filter[3]]); break;
2727
case 'or':
28-
if (!empty($filter[2]) && is_array($filter[2])) {
29-
$statements->where(function($query) use ($filter) {
30-
foreach ($filter[2] as $value) {
31-
foreach ($value[1] as $subVal) {
32-
if (is_object($subVal)) {
33-
$subVal_array = get_object_vars($subVal);
34-
$query->orWhere(function($query) use ($subVal_array, $value) {
35-
foreach ($subVal_array as $key => $val) {
36-
$query->where($value[0] . '.' . $key, '=', $val);
37-
}
38-
});
39-
} else {
40-
$query->orWhere($value[0], '=', $subVal);
41-
}
42-
}
43-
}
28+
if (!empty($filter[2]) && is_array($filter[2])) {
29+
$statements->where(function($query) use ($filter) {
30+
foreach ($filter[2] as $value) {
31+
foreach ($value[1] as $subVal) {
32+
if (is_object($subVal)) {
33+
$subVal_array = get_object_vars($subVal);
34+
$query->orWhere(function($query) use ($subVal_array, $value) {
35+
foreach ($subVal_array as $key => $val) {
36+
$query->where($value[0] . '.' . $key, '=', $val);
37+
}
4438
});
39+
} else {
40+
$query->orWhere($value[0], '=', $subVal);
41+
}
4542
}
46-
break;
43+
}
44+
});
45+
}
46+
break;
4747
default: $statements->where($filter[0], $filter[1], $filter[2]);
4848
}
4949
}
@@ -161,7 +161,7 @@ public function void(array $match, array $opts) {
161161
$opts['authority'] = json_decode(json_encode($opts['client']['authority']));
162162

163163
if( count($statements) > 0 ){
164-
return (new StatementsRepo())->store(json_decode(json_encode($statements)), [], $opts);
164+
return (new StatementsRepo())->store(json_decode(json_encode($statements)), [], $opts);
165165
} else {
166166
return [];
167167
}
@@ -191,19 +191,19 @@ public function selectDistinctField( $lrs='', $table='', $field='', $value='', $
191191

192192
/**
193193
* Gets statement documents based on a filter.
194-
*
194+
*
195195
* @param $lrs id The Lrs to search in (required)
196196
* @param $filter array The filter array
197197
* @param $raw boolean Pagination or raw statements?
198198
* @param $sections array Sections of the statement to return, default = all
199-
*
199+
*
200200
* @return Statement query
201201
*/
202202
public function selectStatementDocs( $lrs='', $filter, $raw=false, $sections=[] ){
203203
$statements = \Statement::where('lrs._id', $lrs);
204204

205205
if( !empty($filter) ){
206-
206+
207207
foreach($filter as $key => $value ){
208208
if( is_array($value) ){
209209
//does the array contain between values? e.g. <> 3, 6
@@ -229,7 +229,7 @@ public function selectStatementDocs( $lrs='', $filter, $raw=false, $sections=[]
229229
* @param $filter array The filter array
230230
* @param $raw boolean Pagination or raw statements?
231231
* @param $sections array Sections of the statement to return, default = all
232-
*
232+
*
233233
* @return array results
234234
*
235235
**/
@@ -276,16 +276,16 @@ public function timedGrouping( $lrs, $filters, $interval, $type='time' ){
276276
$set_id = [ $interval => '$timestamp' ];
277277
}else{
278278
switch($type){
279-
case 'user':
280-
$set_id = ['actor' => '$statement.actor'];
281-
$project = ['$addToSet' => '$statement.actor'];
279+
case 'user':
280+
$set_id = ['actor' => '$statement.actor'];
281+
$project = ['$addToSet' => '$statement.actor'];
282282
break;
283-
case 'verb':
284-
$set_id = ['verb' => '$statement.verb'];
285-
$project = ['$addToSet' => '$statement.verb'];
283+
case 'verb':
284+
$set_id = ['verb' => '$statement.verb'];
285+
$project = ['$addToSet' => '$statement.verb'];
286286
break;
287-
case 'activity':
288-
$set_id = ['activity' => '$statement.object'];
287+
case 'activity':
288+
$set_id = ['activity' => '$statement.object'];
289289
$project = ['$addToSet' => '$statement.object'];
290290
break;
291291
}
@@ -337,8 +337,8 @@ public function timedGrouping( $lrs, $filters, $interval, $type='time' ){
337337
* Return grouped object based on criteria passed.
338338
*
339339
* @param $lrs
340-
* @param $section
341-
* @param $filters
340+
* @param $section
341+
* @param $filters
342342
* @param $returnFields
343343
*
344344
* @return $results

app/tests/routes/StatementsTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public function testAggregateObject() {
103103

104104
public function testWhere() {
105105
$response = $this->requestStatements('where', [
106-
'filters' => '[[{"active", true}]]',
106+
'filters' => '[["active", "=", true]]',
107107
'limit' => 1,
108108
'page' => 1
109109
]);

0 commit comments

Comments
 (0)