Commit e67097c9 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Additional runtime wallet function test cases.

parent dc0443c4
Loading
Loading
Loading
Loading
+87 −0
Original line number Diff line number Diff line
@@ -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")
}
+2 −2
Original line number Diff line number Diff line
@@ -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)
	}