Files
resourcespace/tests/test_list/001406_reorder_collections.php
2025-07-18 16:20:14 +07:00

57 lines
1.4 KiB
PHP

<?php
command_line_only();
// Set up
$get_collections_order = function (array $refs) {
return ps_array('SELECT ref AS `value` FROM collection WHERE ref IN (' . ps_param_insert(count($refs)) . ') ORDER BY order_by ASC', ps_param_fill($refs, 'i'));
};
$A = create_collection(0, 'test_1406 collection A');
$B = create_collection(0, 'test_1406 collection B');
$C = create_collection(0, 'test_1406 collection C');
$all = [$A, $B, $C];
$use_cases = [
[
'name' => 'Re-order',
'new_order' => [$B, $A, $C],
'expected' => [$B, $A, $C],
],
[
'name' => 'Nothing to re-order',
'new_order' => [],
'expected' => $all,
],
[
'name' => 'Bad input: non-numeric strings',
'new_order' => [$C, 'foo', $A, $B, 'bar'],
'expected' => [$C, $A, $B],
],
[
'name' => 'Bad input: string numbers',
'new_order' => [$C, $A, (string) $B],
'expected' => [$C, $A, $B],
],
];
foreach ($use_cases as $use_case) {
sql_reorder_records('collection', $use_case['new_order']);
if ($get_collections_order($all) !== $use_case['expected']) {
echo "Use case: {$use_case['name']} - ";
return false;
}
// Reset order to the initial one
sql_reorder_records('collection', $all);
}
// Tear down
unset($get_collections_order, $A, $B, $C, $use_cases);
return true;