'test-flag', 'label' => 'Test flag', 'enabled' => true, 'stages' => null, 'roles' => null, ], $attributes)); app(FeatureFlagRegistrar::class)->registerAll(); return $flag; } test('a kikapcsolt flag mindenkinek inaktív', function () { defineFlag(['enabled' => false]); $user = User::factory()->create(); expect(Feature::for($user)->active('test-flag'))->toBeFalse(); }); test('a stage-mismatch inaktívvá teszi a flaget', function () { Config::set('app.stage', 'PROD'); defineFlag(['stages' => ['TEST']]); $user = User::factory()->create(); expect(Feature::for($user)->active('test-flag'))->toBeFalse(); }); test('a stage-match aktívvá teszi a flaget', function () { Config::set('app.stage', 'TEST'); defineFlag(['stages' => ['TEST']]); $user = User::factory()->create(); expect(Feature::for($user)->active('test-flag'))->toBeTrue(); }); test('a role-mismatch inaktívvá teszi a flaget', function () { Role::create(['name' => 'admin', 'display_name' => 'Admin']); defineFlag(['roles' => ['admin']]); $user = User::factory()->create(); expect(Feature::for($user)->active('test-flag'))->toBeFalse(); }); test('a role-match aktívvá teszi a flaget', function () { $role = Role::create(['name' => 'admin', 'display_name' => 'Admin']); defineFlag(['roles' => ['admin']]); $user = User::factory()->create(); $user->addRole($role); expect(Feature::for($user)->active('test-flag'))->toBeTrue(); }); test('a user-szintű explicit felülbírálás felülír mindent', function () { $flag = defineFlag(['enabled' => false]); $user = User::factory()->create(); FeatureFlagOverride::create([ 'feature_flag_id' => $flag->id, 'user_id' => $user->id, 'active' => true, ]); Feature::for($user)->forget('test-flag'); expect(Feature::for($user)->active('test-flag'))->toBeTrue(); }); test('a flag admin-mentése nem törli az egyéni felülbírálásokat', function () { $flag = defineFlag(['enabled' => true]); $user = User::factory()->create(); FeatureFlagOverride::create([ 'feature_flag_id' => $flag->id, 'user_id' => $user->id, 'active' => false, ]); Feature::for($user)->forget('test-flag'); expect(Feature::for($user)->active('test-flag'))->toBeFalse(); // Admin módosítja a flaget (pl. leírás) - ez kiváltja a FeatureFlagObserver purge-öt $flag->update(['description' => 'módosítva']); app(FeatureFlagRegistrar::class)->registerAll(); expect(FeatureFlagOverride::where('feature_flag_id', $flag->id)->where('user_id', $user->id)->exists()) ->toBeTrue(); expect(Feature::for($user)->active('test-flag'))->toBeFalse(); }); test('üres stages/roles esetén mindenkinek aktív', function () { defineFlag([]); $user = User::factory()->create(); expect(Feature::for($user)->active('test-flag'))->toBeTrue(); });