test set order migration
This commit is contained in:
parent
99ceeff5b8
commit
7579c3c1b3
1 changed files with 86 additions and 0 deletions
86
backend/tests/Feature/SetOrderingMigrationTest.php
Normal file
86
backend/tests/Feature/SetOrderingMigrationTest.php
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Tests\TestCase;
|
||||
|
||||
class SetOrderingMigrationTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
private const MIGRATION_PATH =
|
||||
'migrations/2026_07_31_000000_add_sort_order_to_sets_table.php';
|
||||
|
||||
public function testBackfillsExistingSetsInCurrentDisplayOrder(): void
|
||||
{
|
||||
$migration = $this->runMigrationAgainstLegacySets();
|
||||
|
||||
$this->assertSame(
|
||||
[2, 7],
|
||||
DB::table('sets')->orderBy('sort_order')->pluck('id')->all(),
|
||||
);
|
||||
$this->assertSame(
|
||||
[1, 2],
|
||||
DB::table('sets')
|
||||
->orderBy('sort_order')
|
||||
->pluck('sort_order')
|
||||
->all(),
|
||||
);
|
||||
|
||||
$this->expectException(QueryException::class);
|
||||
DB::table('sets')->insert([
|
||||
'id' => 9,
|
||||
'name' => 'Unordered Set',
|
||||
'description' => 'A set without an explicit position',
|
||||
'icon_image_url' => '/assets/unordered.png',
|
||||
]);
|
||||
}
|
||||
|
||||
public function testRollbackRemovesOrderWithoutDeletingSets(): void
|
||||
{
|
||||
$migration = $this->runMigrationAgainstLegacySets();
|
||||
|
||||
$migration->down();
|
||||
|
||||
$this->assertFalse(Schema::hasColumn('sets', 'sort_order'));
|
||||
$this->assertSame(
|
||||
[2, 7],
|
||||
DB::table('sets')->orderBy('id')->pluck('id')->all(),
|
||||
);
|
||||
}
|
||||
|
||||
private function runMigrationAgainstLegacySets(): object
|
||||
{
|
||||
if (Schema::hasColumn('sets', 'sort_order')) {
|
||||
Schema::table('sets', function (Blueprint $table): void {
|
||||
$table->dropColumn('sort_order');
|
||||
});
|
||||
}
|
||||
|
||||
DB::table('sets')->delete();
|
||||
DB::table('sets')->insert([
|
||||
[
|
||||
'id' => 7,
|
||||
'name' => 'Later Set',
|
||||
'description' => 'Created later',
|
||||
'icon_image_url' => '/assets/later.png',
|
||||
],
|
||||
[
|
||||
'id' => 2,
|
||||
'name' => 'Earlier Set',
|
||||
'description' => 'Created earlier',
|
||||
'icon_image_url' => '/assets/earlier.png',
|
||||
],
|
||||
]);
|
||||
|
||||
$migration = require database_path(self::MIGRATION_PATH);
|
||||
$migration->up();
|
||||
|
||||
return $migration;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue