Skip to content

Commit

Permalink
Merge pull request #133 from kozmod/feature/132_ctx_camcel_tests
Browse files Browse the repository at this point in the history
[#132] cancel `ctx` integration tests
  • Loading branch information
kozmod authored Mar 18, 2024
2 parents 9d6cae5 + ab9eb72 commit 22f0c9e
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 4 deletions.
23 changes: 23 additions & 0 deletions test/integration/internal/gorm/gorm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,29 @@ func Test_UseCase_CreateTextRecords(t *testing.T) {

}

err = ClearDB(db)
assert.NoError(t, err)
})
t.Run("ctx_canceled_error_and_rollback", func(t *testing.T) {
var (
ctx, cancel = context.WithCancel(context.Background())
transactor = ogorm.NewTransactor(db)
repositoryA = NewTextRepository(transactor, false)
repositoryB = NewTextRepository(transactor, false)
useCase = NewUseCase(repositoryA, repositoryB, transactor)
)

cancel()
err := useCase.CreateTextRecords(ctx, textRecord)
assert.Error(t, err)
assert.ErrorIs(t, err, context.Canceled)

{
records, err := GetTextRecords(db)
assert.NoError(t, err)
assert.Len(t, records, 0)
}

err = ClearDB(db)
assert.NoError(t, err)
})
Expand Down
5 changes: 4 additions & 1 deletion test/integration/internal/gorm/helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package gorm

import (
"fmt"
"gorm.io/gorm/logger"
"testing"

"github.com/stretchr/testify/assert"
Expand All @@ -12,7 +13,9 @@ import (
)

func ConnectDB(t *testing.T) *gorm.DB {
db, err := gorm.Open(postgres.Open(entity.ConnectionString), &gorm.Config{})
db, err := gorm.Open(postgres.Open(entity.ConnectionString), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
assert.NoError(t, err)
return db
}
Expand Down
4 changes: 2 additions & 2 deletions test/integration/internal/gorm/repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (r *TextRepository) RawInsert(ctx context.Context, val string) error {
return entity.ErrExpected
}
ex := r.transactor.GetExecutor(ctx)
ex = ex.Exec(`INSERT INTO gorm (val) VALUES ($1)`, val)
ex = ex.WithContext(ctx).Exec(`INSERT INTO gorm (val) VALUES ($1)`, val)
if ex.Error != nil {
return fmt.Errorf("gorm repository - raw insert: %w", ex.Error)
}
Expand All @@ -52,7 +52,7 @@ func (r *TextRepository) Insert(ctx context.Context, text Text) error {
return entity.ErrExpected
}
ex := r.transactor.GetExecutor(ctx)
ex = ex.Create(text)
ex = ex.WithContext(ctx).Create(text)
if ex.Error != nil {
return fmt.Errorf("gorm repository - raw insert: %w", ex.Error)
}
Expand Down
8 changes: 8 additions & 0 deletions test/integration/internal/pgx/helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ func ClearDB(ctx context.Context, db *pgx.Conn) error {
}

func GetTextRecords(ctx context.Context, db *pgx.Conn) ([]string, error) {
if db.IsClosed() {
conn, err := pgx.Connect(ctx, entity.ConnectionString)
if err != nil {
return nil, fmt.Errorf("new cannection: %w", err)
}
*db = *conn
}

row, err := db.Query(ctx, "SELECT val FROM pgx;")
if err != nil {
return nil, fmt.Errorf("get `text` records: %w", err)
Expand Down
23 changes: 23 additions & 0 deletions test/integration/internal/pgx/pgx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,29 @@ func Test_UseCase_CreateTextRecords(t *testing.T) {

}

err = ClearDB(globalCtx, db)
assert.NoError(t, err)
})
t.Run("ctx_canceled_error_and_rollback", func(t *testing.T) {
var (
ctx, cancel = context.WithCancel(context.Background())
transactor = opgx.NewTransactor(db)
repositoryA = NewTextRepository(transactor, false)
repositoryB = NewTextRepository(transactor, false)
useCase = NewUseCase(repositoryA, repositoryB, transactor)
)

cancel()
err := useCase.CreateTextRecords(ctx, textRecord)
assert.Error(t, err)
assert.ErrorIs(t, err, context.Canceled)

{
records, err := GetTextRecords(globalCtx, db)
assert.NoError(t, err)
assert.Len(t, records, 0)
}

err = ClearDB(globalCtx, db)
assert.NoError(t, err)
})
Expand Down
22 changes: 22 additions & 0 deletions test/integration/internal/sqlx/sqlx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,28 @@ func Test_UseCase_CreateTextRecords(t *testing.T) {

}

err = ClearDB(globalCtx, db)
assert.NoError(t, err)
})
t.Run("ctx_canceled_error_and_rollback", func(t *testing.T) {
var (
ctx, cancel = context.WithCancel(context.Background())
transactor = osqlx.NewTransactor(db)
repositoryA = NewTextRepository(transactor, false)
repositoryB = NewTextRepository(transactor, false)
useCase = NewUseCase(repositoryA, repositoryB, transactor)
)
cancel()
err := useCase.CreateTextRecords(ctx, textRecord)
assert.Error(t, err)
assert.ErrorIs(t, err, context.Canceled)

{
records, err := GetTextRecords(globalCtx, db)
assert.NoError(t, err)
assert.Len(t, records, 0)
}

err = ClearDB(globalCtx, db)
assert.NoError(t, err)
})
Expand Down
2 changes: 1 addition & 1 deletion test/integration/internal/stdlib/stdlib_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func Test_UseCase(t *testing.T) {
ctx, cancel = context.WithCancel(context.Background())
transactor = ostdlib.NewTransactor(db)
repositoryA = NewTextRepository(transactor, false)
repositoryB = NewTextRepository(transactor, true)
repositoryB = NewTextRepository(transactor, false)
useCase = NewUseCase(repositoryA, repositoryB, transactor)
)

Expand Down

0 comments on commit 22f0c9e

Please sign in to comment.