trypost/tests/Feature/Migrations/DropAutomationTablesMigrationTest.php

43 lines
1.5 KiB
PHP
Raw Permalink Normal View History

Remove the automations module (#333) * Remove the automations module Drops the visual workflow builder end to end: actions, node runners, commands, jobs, models, observers, policy, resources, requests, routes, broadcast channel, scheduler entries, Horizon supervisor, Vue pages and components, canvas undo/redo history, CodeEditor, translations, factories and tests. A new migration rewrites posts.created_via = 'automation' to 'web' and drops the five automation tables. The CreatedVia::Automation enum case is removed. The 2026-08-21 social-account identity migration now skips its automation node repointing when the automations table no longer exists, so it stays re-runnable after the drop. Orphaned dependencies removed: simplepie/simplepie, @vue-flow/*, codemirror and @codemirror/*. * Drop the orphaned common.beta translation key * Remove automation leftovers: ResolvableUrl rule, feed fixtures, useShortcut, nav badge * Drop the unused chart wrapper and @unovis packages * Address review: keep the shipped migration untouched, drop the dead previewOnly chain - Restore 2026_08_21 migration to exactly what production ran; the rehearsal test now recreates the automations table it expects instead. - Mark the drop migration's down() irreversible like its siblings. - Simplify DropAutomationTablesMigrationTest to the sibling shape. - Remove previewOnly / aiGenerateVariants: the only caller that set the prop was the deleted automation Generate node. - Run pint over lang/*/common.php after the beta key removal. * Exercise the drop migration against the real automation tables and their FKs * Drop DuplicateIdentityRehearsalTest: it re-ran a frozen migration that reads the removed automations table
2026-09-05 14:03:23 +00:00
<?php
declare(strict_types=1);
use App\Enums\Post\CreatedVia;
use App\Models\Post;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
beforeEach(function () {
$this->tables = [
'automations' => '2026_05_22_211640_create_automations_table',
'automation_trigger_items' => '2026_05_22_211641_create_automation_trigger_items_table',
'automation_runs' => '2026_05_22_211642_create_automation_runs_table',
'automation_node_runs' => '2026_05_22_211643_create_automation_node_runs_table',
'automation_node_states' => '2026_05_23_164734_create_automation_node_states_table',
];
foreach ($this->tables as $table => $migration) {
if (! Schema::hasTable($table)) {
(require database_path("migrations/{$migration}.php"))->up();
}
}
});
test('rewrites automation-created posts to web and drops the automation tables in FK order', function () {
$post = Post::factory()->create(['created_via' => CreatedVia::Web]);
DB::table('posts')->where('id', $post->id)->update(['created_via' => 'automation']);
foreach (array_keys($this->tables) as $table) {
expect(Schema::hasTable($table))->toBeTrue();
}
$migration = require database_path('migrations/2026_09_05_124637_drop_automation_tables.php');
$migration->up();
expect($post->fresh()->created_via)->toBe(CreatedVia::Web);
foreach (array_keys($this->tables) as $table) {
expect(Schema::hasTable($table))->toBeFalse();
}
});