fix(server): honor cash mail delivery for native shop purchases
This commit is contained in:
@@ -88,6 +88,8 @@ func cashList(t *testing.T, m *mail.Service, start, count uint64) ([]uint64, []b
|
||||
}
|
||||
func TestCashPurchaseMailSQLiteRollbackRestartBatchAndReplay(t *testing.T) {
|
||||
fixture, _, _ := serviceFixture(t, 0)
|
||||
nativeKey := gamedata.CashProductKey{GroupID: 44, ProductID: 1}
|
||||
fixture.catalog.designs[nativeKey] = gamedata.CashProductDesign{Key: nativeKey, PriceType: 2, PriceCount: 1000, RandomBoxID: 20}
|
||||
path := filepath.Join(t.TempDir(), "state.db")
|
||||
graph := &deliveryGraph{}
|
||||
open := func() (*accountstate.Repository, *Service, *mail.Service, *player.Wallet, *player.Inventory) {
|
||||
@@ -165,7 +167,11 @@ func TestCashPurchaseMailSQLiteRollbackRestartBatchAndReplay(t *testing.T) {
|
||||
if err = mailbox.BeforeDispatch("/CashShopBuy", nil); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, response, _, err := shop.HandleSession("/CashShopBuy", buyRequest(seq, 2, 1, 0, ""), "s")
|
||||
request := buyRequest(seq, 2, 1, 0, "")
|
||||
if seq == 2 {
|
||||
request = nativeBuyRequest(seq, 44, [3]uint64{1, 0, 1})
|
||||
}
|
||||
_, response, _, err := shop.HandleSession("/CashShopBuy", request, "s")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"bd2server/internal/server/events"
|
||||
"bd2server/internal/server/gamedata"
|
||||
"bd2server/internal/server/hunting"
|
||||
"bd2server/internal/server/mail"
|
||||
"bd2server/internal/server/player"
|
||||
"bd2server/internal/server/stateio"
|
||||
)
|
||||
@@ -140,6 +141,20 @@ func TestInstalledAllNativeProductRewardAndPriceDomains(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mailbox, err := mail.OpenService(store, &mail.Starter{Version: "2.35.10", MailCount: 1}, items, wallet)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
templates, err := gamedata.LoadCashMailTemplates(root, version)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = mailbox.AttachCashRewards(entitlement, templates); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = entitlement.AttachCashMail(mailbox); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
policy, err := NewCatalog("2.35.10", catalog, gameconfig.Default().Purchases)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
@@ -560,7 +560,7 @@ func (s *Service) buy(session string, request []byte) (int, []byte, bool, error)
|
||||
var err error
|
||||
if delivery, ok := s.economy.(interface {
|
||||
ApplyPurchase(string, []gamedata.Reward, []gamedata.Reward) ([]byte, error)
|
||||
}); ok && d.PriceType == 1 {
|
||||
}); ok {
|
||||
b, err = delivery.ApplyPurchase(operation, costs, rewards)
|
||||
} else {
|
||||
b, err = s.economy.Apply(operation, costs, rewards)
|
||||
|
||||
Reference in New Issue
Block a user