fix family member renewal target
Build docker and publish / build (20.15.1) (push) Has been cancelled
Build docker and publish / build (20.15.1) (push) Has been cancelled
This commit is contained in:
@@ -699,6 +699,85 @@ func TestPurchase_NewUserOnly_BindEmailScopeSharesHistory(t *testing.T) {
|
||||
assert.Equal(t, int64(0), newOrder.Discount)
|
||||
}
|
||||
|
||||
func ensureRenewalSubscribeColumns(t *testing.T, db *gorm.DB) {
|
||||
t.Helper()
|
||||
for _, sql := range []string{
|
||||
`ALTER TABLE "user_subscribe" ADD COLUMN node_group_id INTEGER NOT NULL DEFAULT 0`,
|
||||
`ALTER TABLE "user_subscribe" ADD COLUMN group_locked TINYINT NOT NULL DEFAULT 0`,
|
||||
`ALTER TABLE "user_subscribe" ADD COLUMN expired_download INTEGER NOT NULL DEFAULT 0`,
|
||||
`ALTER TABLE "user_subscribe" ADD COLUMN expired_upload INTEGER NOT NULL DEFAULT 0`,
|
||||
} {
|
||||
require.NoError(t, db.Exec(sql).Error)
|
||||
}
|
||||
}
|
||||
|
||||
func insertRenewalUserSubscribe(t *testing.T, db *gorm.DB, id, userID, orderID, subscribeID int64, token, uuid string, start, expire time.Time) {
|
||||
t.Helper()
|
||||
require.NoError(t, db.Exec(`INSERT INTO "user_subscribe"
|
||||
(id, user_id, order_id, subscribe_id, start_time, expire_time, traffic, download, upload, token, uuid, status, created_at, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, 0, 0, 0, ?, ?, 1, ?, ?)`,
|
||||
id,
|
||||
userID,
|
||||
orderID,
|
||||
subscribeID,
|
||||
start.UTC().Format("2006-01-02 15:04:05"),
|
||||
expire.UTC().Format("2006-01-02 15:04:05"),
|
||||
token,
|
||||
uuid,
|
||||
start.UTC().Format("2006-01-02 15:04:05"),
|
||||
time.Now().UTC().Format("2006-01-02 15:04:05"),
|
||||
).Error)
|
||||
}
|
||||
|
||||
func TestRenewalMemberRequestRedirectsToOwnerSubscribe(t *testing.T) {
|
||||
db := setupNewUserOnlyDB(t)
|
||||
ensureRenewalSubscribeColumns(t, db)
|
||||
rds, mr := setupNewUserOnlyRedis(t)
|
||||
svcCtx := buildNewUserOnlySvcCtx(db, rds, mr)
|
||||
|
||||
const (
|
||||
planID = int64(1)
|
||||
paymentID = int64(2)
|
||||
ownerUserID = int64(29650)
|
||||
memberID = int64(20003)
|
||||
familyID = int64(88001)
|
||||
memberSubID = int64(10013)
|
||||
ownerSubID = int64(14074)
|
||||
)
|
||||
|
||||
insertTestSubscribe(t, db, planID, false)
|
||||
insertTestPayment(t, db, paymentID)
|
||||
member := insertTestUser(t, db, memberID, time.Now().Add(-24*time.Hour))
|
||||
insertTestUser(t, db, ownerUserID, time.Now().Add(-24*time.Hour))
|
||||
insertTestFamily(t, db, familyID, ownerUserID)
|
||||
insertTestFamilyMember(t, db, familyID, ownerUserID, user.FamilyRoleOwner, user.FamilyMemberActive, "owner_init")
|
||||
insertTestFamilyMember(t, db, familyID, memberID, user.FamilyRoleMember, user.FamilyMemberActive, "manual_invite")
|
||||
|
||||
insertRenewalUserSubscribe(t, db, memberSubID, memberID, 7448, planID, "member-token-10013", "member-uuid-10013",
|
||||
time.Date(2026, 4, 23, 19, 6, 40, 0, time.UTC),
|
||||
time.Date(2026, 4, 30, 19, 6, 40, 0, time.UTC),
|
||||
)
|
||||
insertRenewalUserSubscribe(t, db, ownerSubID, ownerUserID, 9999, planID, "owner-token-14074", "owner-uuid-14074",
|
||||
time.Date(2026, 4, 30, 13, 39, 33, 0, time.UTC),
|
||||
time.Date(2026, 5, 30, 16, 0, 0, 0, time.UTC),
|
||||
)
|
||||
|
||||
resp, err := NewRenewalLogic(buildPurchaseCtx(member), svcCtx).Renewal(&types.RenewalOrderRequest{
|
||||
UserSubscribeID: memberSubID,
|
||||
Payment: paymentID,
|
||||
Quantity: 30,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, resp)
|
||||
|
||||
var created modelOrder.Order
|
||||
require.NoError(t, db.Where("order_no = ?", resp.OrderNo).First(&created).Error)
|
||||
assert.Equal(t, memberID, created.UserId)
|
||||
assert.Equal(t, ownerUserID, created.SubscriptionUserId)
|
||||
assert.Equal(t, int64(9999), created.ParentId)
|
||||
assert.Equal(t, "owner-token-14074", created.SubscribeToken)
|
||||
}
|
||||
|
||||
func TestPreCreateOrder_NewUserOnly_BindEmailScopeUsesEarliestDeviceTime(t *testing.T) {
|
||||
db := setupNewUserOnlyDB(t)
|
||||
rds, mr := setupNewUserOnlyRedis(t)
|
||||
|
||||
Reference in New Issue
Block a user