|
7 | 7 | "testing" |
8 | 8 |
|
9 | 9 | sq "github.com/Masterminds/squirrel" |
| 10 | + "github.com/jackc/pgx/v5" |
10 | 11 | "github.com/stretchr/testify/require" |
11 | 12 | ) |
12 | 13 |
|
@@ -193,6 +194,34 @@ func TestTable(t *testing.T) { |
193 | 194 | }) |
194 | 195 | require.NoError(t, err, "SaveTx transaction failed") |
195 | 196 | }) |
| 197 | + |
| 198 | + t.Run("WithTx keeps IDColumn", func(t *testing.T) { |
| 199 | + ctx := t.Context() |
| 200 | + |
| 201 | + account := &Account{Name: "WithTx IDColumn Account"} |
| 202 | + err := db.Accounts.Save(ctx, account) |
| 203 | + require.NoError(t, err, "create account failed") |
| 204 | + |
| 205 | + article := &Article{AccountID: account.ID, Author: "WithTx author"} |
| 206 | + err = db.Articles.Save(ctx, article) |
| 207 | + require.NoError(t, err, "create article failed") |
| 208 | + |
| 209 | + err = pgx.BeginFunc(ctx, db.Conn, func(pgTx pgx.Tx) error { |
| 210 | + txTable := db.Articles.Table.WithTx(pgTx) |
| 211 | + if err := txTable.HardDeleteByID(ctx, article.ID); err != nil { |
| 212 | + return err |
| 213 | + } |
| 214 | + |
| 215 | + _, err := txTable.GetByID(ctx, article.ID) |
| 216 | + require.Error(t, err, "article should be deleted inside tx") |
| 217 | + |
| 218 | + return nil |
| 219 | + }) |
| 220 | + require.NoError(t, err, "WithTx HardDeleteByID failed") |
| 221 | + |
| 222 | + _, err = db.Articles.GetByID(ctx, article.ID) |
| 223 | + require.Error(t, err, "article should be deleted") |
| 224 | + }) |
196 | 225 | } |
197 | 226 |
|
198 | 227 | func TestLockForUpdates(t *testing.T) { |
|
0 commit comments