Skip to content

Commit

Permalink
feat(syahidfrd#8): update tests to use transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
chud-lori committed Feb 18, 2025
1 parent 42c3fe9 commit f352316
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DATABASE_URL=postgres://postgres:root@localhost/gosyah?sslmode=disable
DATABASE_URL=postgres://postgres:root@localhost/go_boilerplate?sslmode=disable
CACHE_URL=redis://localhost:6379
LOGGER_LEVEL=debug
CONTEXT_TIMEOUT=60
Expand Down
20 changes: 20 additions & 0 deletions repository/pgsql/pgsql_todo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@ func TestTodoRepo_Create(t *testing.T) {
}
defer db.Close()

mock.ExpectBegin()

query := "INSERT INTO todos"
mock.ExpectExec(regexp.QuoteMeta(query)).
WithArgs(todo.Name, todo.CreatedAt, todo.UpdatedAt).
WillReturnResult(sqlmock.NewResult(1, 1))

mock.ExpectCommit()

todoRepo := pgsql.NewPgsqlTodoRepository(db)
err = todoRepo.Create(context.TODO(), todo)
assert.NoError(t, err)
Expand All @@ -52,11 +56,15 @@ func TestTodoRepo_GetByID(t *testing.T) {
rows := sqlmock.NewRows([]string{"id", "name", "created_at", "updated_at"}).
AddRow(todoMock.ID, todoMock.Name, todoMock.CreatedAt, todoMock.UpdatedAt)

mock.ExpectBegin()

query := "SELECT id, name, created_at, updated_at FROM todos WHERE id = $1"
mock.ExpectQuery(regexp.QuoteMeta(query)).
WithArgs(1).
WillReturnRows(rows)

mock.ExpectCommit()

todoRepo := pgsql.NewPgsqlTodoRepository(db)
todo, err := todoRepo.GetByID(context.TODO(), 1)
assert.NoError(t, err)
Expand All @@ -80,9 +88,13 @@ func TestTodoRepo_Fetch(t *testing.T) {
AddRow(mockTodos[0].ID, mockTodos[0].Name, mockTodos[0].CreatedAt, mockTodos[0].UpdatedAt).
AddRow(mockTodos[1].ID, mockTodos[1].Name, mockTodos[1].CreatedAt, mockTodos[1].UpdatedAt)

mock.ExpectBegin()

query := "SELECT id, name, created_at, updated_at FROM todos"
mock.ExpectQuery(query).WillReturnRows(rows)

mock.ExpectCommit()

todoRepo := pgsql.NewPgsqlTodoRepository(db)
todos, err := todoRepo.Fetch(context.TODO())
assert.NoError(t, err)
Expand All @@ -103,11 +115,15 @@ func TestTodoRepo_Update(t *testing.T) {
UpdatedAt: time.Now(),
}

mock.ExpectBegin()

query := "UPDATE todos SET name = $1, updated_at = $2 WHERE id = $3"
mock.ExpectExec(regexp.QuoteMeta(query)).
WithArgs(todo.Name, todo.UpdatedAt, todo.ID).
WillReturnResult(sqlmock.NewResult(1, 1))

mock.ExpectCommit()

todoRepo := pgsql.NewPgsqlTodoRepository(db)
err = todoRepo.Update(context.TODO(), todo)
assert.NoError(t, err)
Expand All @@ -120,11 +136,15 @@ func TestTodoRepo_Delete(t *testing.T) {
}
defer db.Close()

mock.ExpectBegin()

query := "DELETE FROM todos WHERE id = $1"
mock.ExpectExec(regexp.QuoteMeta(query)).
WithArgs(1).
WillReturnResult(sqlmock.NewResult(1, 1))

mock.ExpectCommit()

todoRepo := pgsql.NewPgsqlTodoRepository(db)
err = todoRepo.Delete(context.TODO(), 1)
assert.NoError(t, err)
Expand Down
9 changes: 9 additions & 0 deletions repository/pgsql/pgsql_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,15 @@ func TestUserRepo_Create(t *testing.T) {

defer db.Close()

mock.ExpectBegin()

query := "INSERT INTO users"
mock.ExpectExec(regexp.QuoteMeta(query)).
WithArgs(user.Email, user.Password, user.CreatedAt, user.UpdatedAt).
WillReturnResult(sqlmock.NewResult(1, 1))

mock.ExpectCommit()

userRepo := pgsql.NewPgsqlUserRepository(db)
err = userRepo.Create(context.TODO(), user)
assert.NoError(t, err)
Expand All @@ -55,13 +59,18 @@ func TestUserRepo_GetByEmail(t *testing.T) {
rows := sqlmock.NewRows([]string{"id", "email", "password", "created_at", "updated_at"}).
AddRow(userMock.ID, userMock.Email, userMock.Password, userMock.CreatedAt, userMock.UpdatedAt)

mock.ExpectBegin()

query := "SELECT id, email, password, created_at, updated_at FROM users WHERE email = $1"
mock.ExpectQuery(regexp.QuoteMeta(query)).
WithArgs(userMock.Email).
WillReturnRows(rows)

mock.ExpectCommit()

userRepo := pgsql.NewPgsqlUserRepository(db)
user, err := userRepo.GetByEmail(context.TODO(), userMock.Email)

assert.NoError(t, err)
assert.NotNil(t, user)
assert.Equal(t, userMock.ID, user.ID)
Expand Down

0 comments on commit f352316

Please sign in to comment.