test: add pet fusion transaction coverage
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -72,6 +72,9 @@ func (s *UserService) PetFusionTx(
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := syncPetSnapshotBeforeDeleteTx(tx, userID, currentInfo, masterCatchTime); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := deletePetTx(tx, userID, masterCatchTime); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -82,6 +85,9 @@ func (s *UserService) PetFusionTx(
|
||||
}
|
||||
result.CostItemUsed = used
|
||||
if !used {
|
||||
if err := syncPetSnapshotBeforeDeleteTx(tx, userID, currentInfo, auxCatchTime); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := deletePetTx(tx, userID, auxCatchTime); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -223,6 +229,28 @@ func updatePetDataTx(tx gdb.TX, userID uint32, catchTime uint32, pet model.PetIn
|
||||
return nil
|
||||
}
|
||||
|
||||
func syncPetSnapshotBeforeDeleteTx(tx gdb.TX, userID uint32, info model.PlayerInfo, catchTime uint32) error {
|
||||
pet, ok := findPetDataSnapshotInPlayerInfo(info, catchTime)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
return updatePetDataTx(tx, userID, catchTime, pet)
|
||||
}
|
||||
|
||||
func findPetDataSnapshotInPlayerInfo(info model.PlayerInfo, catchTime uint32) (model.PetInfo, bool) {
|
||||
for i := range info.PetList {
|
||||
if info.PetList[i].CatchTime == catchTime {
|
||||
return info.PetList[i], true
|
||||
}
|
||||
}
|
||||
for i := range info.BackupPetList {
|
||||
if info.BackupPetList[i].CatchTime == catchTime {
|
||||
return info.BackupPetList[i], true
|
||||
}
|
||||
}
|
||||
return model.PetInfo{}, false
|
||||
}
|
||||
|
||||
func deletePetTx(tx gdb.TX, userID uint32, catchTime uint32) error {
|
||||
res, err := tx.Model(model.NewPet()).
|
||||
Where("player_id", userID).
|
||||
|
||||
Reference in New Issue
Block a user