assertRedirect(route('login')); }); it('renders step 1 chrome', function () { $user = User::factory()->create(['email_verified_at' => now()]); actingAs($user)->get(route('clusters.create')) ->assertStatus(200) ->assertSeeText('Cluster anlegen') ->assertSeeText('Basis') ->assertSeeText('Cluster Name') ->assertSeeText('Environment') ->assertSeeText('Zusammenfassung'); }); it('walks through 4 steps', function () { livewire('pages.clusters.create') ->assertSet('step', 1) ->set('name', 'Prod Acme') ->call('nextStep') ->assertSet('step', 2) ->call('nextStep') ->assertSet('step', 3) ->call('nextStep') ->assertSet('step', 4) ->assertSeeText('Review') ->call('prevStep') ->assertSet('step', 3); }); it('rejects an empty name on step 1', function () { livewire('pages.clusters.create') ->set('name', '') ->call('nextStep') ->assertHasErrors('name') ->assertSet('step', 1); }); it('creates the cluster on final step', function () { livewire('pages.clusters.create') ->set('name', 'Wizard Created') ->set('env', 'staging') ->set('region', 'eu-west-1') ->set('size', 'large') ->set('nodes', 3) ->set('step', 4) ->call('create') ->assertRedirect(route('servers.index')); expect(Cluster::where('name', 'Wizard Created')->exists())->toBeTrue(); }); it('computes monthly price from size × nodes', function () { $c = livewire('pages.clusters.create') ->set('size', 'small') ->set('nodes', 4); expect($c->get('monthlyPrice'))->toBe(196); });