extend(TestCase::class) ->use(RefreshDatabase::class) ->beforeEach(function () { // PortalScope-Context zwischen Tests zurücksetzen, damit statischer // State aus vorherigen Requests nicht in Volt-Tests durchschlägt. CurrentPortalContext::clear(); }) ->in('Feature'); /* |-------------------------------------------------------------------------- | Expectations |-------------------------------------------------------------------------- | | When you're writing tests, you often need to check that values meet certain conditions. The | "expect()" function gives you access to a set of "expectations" methods that you can use | to assert different things. Of course, you may extend the Expectation API at any time. | */ expect()->extend('toBeOne', function () { return $this->toBe(1); }); /* |-------------------------------------------------------------------------- | Functions |-------------------------------------------------------------------------- | | While Pest is very powerful out-of-the-box, you may have some testing code specific to your | project that you don't want to repeat in every file. Here you can also expose helpers as | global functions to help you to reduce the number of lines of code in your test files. | */ function something() { // .. } /** * Legt offline eine aktive Cashier-Abo-Zeile für den User an (kein * Stripe-Aufruf) und verknüpft sie über die Preis-ID mit dem Tarif — * `User::currentPlan()` löst darüber auf. */ function subscribeUserToPlan(User $user, Plan $plan, string $interval = 'monthly'): void { $priceId = $interval === 'yearly' ? $plan->stripe_price_id_yearly : $plan->stripe_price_id_monthly; $user->subscriptions()->create([ 'type' => 'default', 'stripe_id' => 'sub_test_'.fake()->unique()->randomNumber(6), 'stripe_status' => 'active', 'stripe_price' => $priceId, 'quantity' => 1, ]); }