seed(RecruitingChallenge2026Seeder::class); $incentive = Incentive::where('slug', RecruitingChallenge2026Seeder::SLUG)->firstOrFail(); expect($incentive->isDraft())->toBeTrue() ->and($incentive->name)->toBe('Recruiting Challenge 2026/27') ->and($incentive->qualification_start->toDateString())->toBe('2026-10-01') ->and($incentive->qualification_end->toDateString())->toBe('2027-01-31') ->and((float) $incentive->amount_per_partner)->toBe(50.0) ->and($incentive->rankBonuses())->toBe([1 => 500.0, 2 => 300.0, 3 => 200.0]) ->and($incentive->max_winners)->toBe(3) ->and($incentive->ranksByPartnerCount())->toBeTrue() ->and($incentive->hasMinimumRequirements())->toBeFalse() ->and($incentive->description)->toContain('50 €') ->and($incentive->terms)->toContain('6. Gleichstand') ->and($incentive->description.$incentive->subtitle.$incentive->terms)->not->toContain('–') ->and($incentive->description.$incentive->subtitle.$incentive->terms)->not->toContain('—'); }); it('aktualisiert beim zweiten Lauf nur die Texte und laesst Admin-Werte stehen', function () { $this->seed(RecruitingChallenge2026Seeder::class); $incentive = Incentive::where('slug', RecruitingChallenge2026Seeder::SLUG)->firstOrFail(); $incentive->update(['status' => 1, 'image' => 'challenge.jpg', 'bonus_rank_1' => 999, 'description' => 'alt']); $this->seed(RecruitingChallenge2026Seeder::class); $incentive->refresh(); expect(Incentive::where('slug', RecruitingChallenge2026Seeder::SLUG)->count())->toBe(1) ->and($incentive->status)->toBe(1) ->and($incentive->image)->toBe('challenge.jpg') ->and((float) $incentive->bonus_rank_1)->toBe(999.0) ->and($incentive->description)->toContain('50 €'); });