package model import ( "testing" "github.com/heicode/manager/common" "github.com/stretchr/testify/require" ) // GetUserSwarmEnabled gates swarm access per subscription plan (admin-set, // opt-in): true iff the user has any ACTIVE plan with SwarmEnabled=true. func TestGetUserSwarmEnabled(t *testing.T) { now := common.GetTimestamp() future := now + 100000 onPlan := SubscriptionPlan{Title: "swarm-on", SwarmEnabled: true} require.NoError(t, DB.Create(&onPlan).Error) offPlan := SubscriptionPlan{Title: "swarm-off", SwarmEnabled: false} require.NoError(t, DB.Create(&offPlan).Error) mkSub := func(uid, planId int, end int64) { require.NoError(t, DB.Create(&UserSubscription{UserId: uid, PlanId: planId, Status: "active", EndTime: end}).Error) } // 1. no subscription -> false (opt-in default) require.False(t, GetUserSwarmEnabled(991001)) // 2. active plan with swarm on -> true mkSub(991002, onPlan.Id, future) require.True(t, GetUserSwarmEnabled(991002)) // 3. active plan with swarm off -> false mkSub(991003, offPlan.Id, future) require.False(t, GetUserSwarmEnabled(991003)) // 4. expired swarm-on plan -> false (not active) mkSub(991004, onPlan.Id, now-100) require.False(t, GetUserSwarmEnabled(991004)) // 5. multiple active plans, one on -> true mkSub(991005, offPlan.Id, future) mkSub(991005, onPlan.Id, future) require.True(t, GetUserSwarmEnabled(991005)) // guard: invalid user -> false require.False(t, GetUserSwarmEnabled(0)) }