true, 'billing.api_url' => '', 'billing.api_key' => '']); $user = User::factory()->create(); $service = app(SubscriptionService::class); $this->assertFalse($service->gatingActive()); $this->assertTrue($service->isPro($user)); config(['billing.api_url' => 'https://example.test/billing', 'billing.api_key' => 'test']); $service = app(SubscriptionService::class); $this->assertTrue($service->gatingActive()); $this->assertTrue($service->canConnectStore($user)); WooStore::create([ 'user_id' => $user->id, 'site_url' => 'https://shop-one.example.com', 'status' => WooStore::STATUS_ACTIVE, ]); $this->assertFalse($service->canConnectStore($user)); $storeId = WooStore::query()->where('user_id', $user->id)->value('id'); for ($i = 0; $i < 20; $i++) { WooProduct::create([ 'woo_store_id' => $storeId, 'external_id' => $i + 1, 'name' => 'Product '.$i, 'slug' => 'product-'.$i, 'status' => 'publish', ]); } $this->assertFalse($service->canCreateProduct($user)); } public function test_store_switcher_persists_in_session(): void { $user = User::factory()->create(); $first = WooStore::create([ 'user_id' => $user->id, 'site_url' => 'https://first.example.com', 'site_name' => 'First', 'status' => WooStore::STATUS_ACTIVE, ]); $second = WooStore::create([ 'user_id' => $user->id, 'site_url' => 'https://second.example.com', 'site_name' => 'Second', 'status' => WooStore::STATUS_ACTIVE, ]); $stores = app(CurrentWooStore::class); $this->assertSame($first->id, $stores->resolve($user)?->id); $stores->switch($user, $second->id); $this->assertSame($second->id, $stores->resolve($user)?->id); } }