Loading tests/core_wallet_test.go +87 −0 Original line number Diff line number Diff line Loading @@ -462,3 +462,90 @@ func TestUpdateWalletsMultiUserSharedChangesetDeductions(t *testing.T) { assert.Equal(t, float64(0), wallet["value"].(float64), "wallet value did not match") } } func TestUpdateWalletsSingleUser(t *testing.T) { db := NewDB(t) nk := server.NewRuntimeGoNakamaModule(logger, db, config, nil, nil, nil, nil, nil, nil, nil, nil, nil) userID, _, _, err := server.AuthenticateCustom(context.Background(), logger, db, uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String(), true) if err != nil { t.Fatalf("error creating user: %v", err.Error()) } updates := []*runtime.WalletUpdate{ &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(1)}, }, &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(2)}, }, &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(3)}, }, } err = nk.WalletsUpdate(context.Background(), updates, true) if err != nil { t.Fatalf("error updating wallets: %v", err.Error()) } account, _, err := server.GetAccount(context.Background(), logger, db, nil, uuid.FromStringOrNil(userID)) if err != nil { t.Fatalf("error getting user: %v", err.Error()) } assert.NotNil(t, account, "account is nil") var wallet map[string]interface{} err = json.Unmarshal([]byte(account.Wallet), &wallet) if err != nil { t.Fatalf("json unmarshal error: %v", err.Error()) } assert.Contains(t, wallet, "value", "wallet did not contain value") assert.IsType(t, float64(0), wallet["value"], "wallet value was not float64") assert.Equal(t, float64(6), wallet["value"].(float64), "wallet value did not match") } func TestUpdateWalletRepeatedSingleUser(t *testing.T) { db := NewDB(t) nk := server.NewRuntimeGoNakamaModule(logger, db, config, nil, nil, nil, nil, nil, nil, nil, nil, nil) userID, _, _, err := server.AuthenticateCustom(context.Background(), logger, db, uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String(), true) if err != nil { t.Fatalf("error creating user: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(1)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(2)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(3)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } account, _, err := server.GetAccount(context.Background(), logger, db, nil, uuid.FromStringOrNil(userID)) if err != nil { t.Fatalf("error getting user: %v", err.Error()) } assert.NotNil(t, account, "account is nil") var wallet map[string]interface{} err = json.Unmarshal([]byte(account.Wallet), &wallet) if err != nil { t.Fatalf("json unmarshal error: %v", err.Error()) } assert.Contains(t, wallet, "value", "wallet did not contain value") assert.IsType(t, float64(0), wallet["value"], "wallet value was not float64") assert.Equal(t, float64(6), wallet["value"].(float64), "wallet value did not match") } tests/util.go +2 −2 Original line number Diff line number Diff line Loading @@ -135,8 +135,8 @@ func NewConsoleLogger(output *os.File, verbose bool) *zap.Logger { } func NewDB(t *testing.T) *sql.DB { //db, err := sql.Open("pgx", "postgresql://root@127.0.0.1:26257/nakama?sslmode=disable") db, err := sql.Open("pgx", "postgresql://postgres@127.0.0.1:5432/nakama?sslmode=disable") db, err := sql.Open("pgx", "postgresql://root@127.0.0.1:26257/nakama?sslmode=disable") //db, err := sql.Open("pgx", "postgresql://postgres@127.0.0.1:5432/nakama?sslmode=disable") if err != nil { t.Fatal("Error connecting to database", err) } Loading Loading
tests/core_wallet_test.go +87 −0 Original line number Diff line number Diff line Loading @@ -462,3 +462,90 @@ func TestUpdateWalletsMultiUserSharedChangesetDeductions(t *testing.T) { assert.Equal(t, float64(0), wallet["value"].(float64), "wallet value did not match") } } func TestUpdateWalletsSingleUser(t *testing.T) { db := NewDB(t) nk := server.NewRuntimeGoNakamaModule(logger, db, config, nil, nil, nil, nil, nil, nil, nil, nil, nil) userID, _, _, err := server.AuthenticateCustom(context.Background(), logger, db, uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String(), true) if err != nil { t.Fatalf("error creating user: %v", err.Error()) } updates := []*runtime.WalletUpdate{ &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(1)}, }, &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(2)}, }, &runtime.WalletUpdate{ UserID: userID, Changeset: map[string]interface{}{"value": float64(3)}, }, } err = nk.WalletsUpdate(context.Background(), updates, true) if err != nil { t.Fatalf("error updating wallets: %v", err.Error()) } account, _, err := server.GetAccount(context.Background(), logger, db, nil, uuid.FromStringOrNil(userID)) if err != nil { t.Fatalf("error getting user: %v", err.Error()) } assert.NotNil(t, account, "account is nil") var wallet map[string]interface{} err = json.Unmarshal([]byte(account.Wallet), &wallet) if err != nil { t.Fatalf("json unmarshal error: %v", err.Error()) } assert.Contains(t, wallet, "value", "wallet did not contain value") assert.IsType(t, float64(0), wallet["value"], "wallet value was not float64") assert.Equal(t, float64(6), wallet["value"].(float64), "wallet value did not match") } func TestUpdateWalletRepeatedSingleUser(t *testing.T) { db := NewDB(t) nk := server.NewRuntimeGoNakamaModule(logger, db, config, nil, nil, nil, nil, nil, nil, nil, nil, nil) userID, _, _, err := server.AuthenticateCustom(context.Background(), logger, db, uuid.Must(uuid.NewV4()).String(), uuid.Must(uuid.NewV4()).String(), true) if err != nil { t.Fatalf("error creating user: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(1)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(2)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } err = nk.WalletUpdate(context.Background(), userID, map[string]interface{}{"value": float64(3)}, nil, false) if err != nil { t.Fatalf("error updating wallet: %v", err.Error()) } account, _, err := server.GetAccount(context.Background(), logger, db, nil, uuid.FromStringOrNil(userID)) if err != nil { t.Fatalf("error getting user: %v", err.Error()) } assert.NotNil(t, account, "account is nil") var wallet map[string]interface{} err = json.Unmarshal([]byte(account.Wallet), &wallet) if err != nil { t.Fatalf("json unmarshal error: %v", err.Error()) } assert.Contains(t, wallet, "value", "wallet did not contain value") assert.IsType(t, float64(0), wallet["value"], "wallet value was not float64") assert.Equal(t, float64(6), wallet["value"].(float64), "wallet value did not match") }
tests/util.go +2 −2 Original line number Diff line number Diff line Loading @@ -135,8 +135,8 @@ func NewConsoleLogger(output *os.File, verbose bool) *zap.Logger { } func NewDB(t *testing.T) *sql.DB { //db, err := sql.Open("pgx", "postgresql://root@127.0.0.1:26257/nakama?sslmode=disable") db, err := sql.Open("pgx", "postgresql://postgres@127.0.0.1:5432/nakama?sslmode=disable") db, err := sql.Open("pgx", "postgresql://root@127.0.0.1:26257/nakama?sslmode=disable") //db, err := sql.Open("pgx", "postgresql://postgres@127.0.0.1:5432/nakama?sslmode=disable") if err != nil { t.Fatal("Error connecting to database", err) } Loading