Last active
June 10, 2022 08:06
-
-
Save alfiankan/8ed8edaa29b3f3bc052dcdf10ad4f4c5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"errors" | |
"log" | |
"testing" | |
"github.com/DATA-DOG/go-sqlmock" | |
"github.com/jmoiron/sqlx" | |
"github.com/stretchr/testify/assert" | |
) | |
func CreateUser(db *sqlx.DB, name, email string) (insertedID int64, err error) { | |
result, err := db.Exec("INSERT INTO users (name, email) VALUES (?,?)", name, email) | |
if err != nil { | |
return | |
} | |
insertedID, err = result.LastInsertId() | |
return | |
} | |
func TestMockDbCreateUser(t *testing.T) { | |
db, mock, err := sqlmock.New() | |
if err != nil { | |
log.Fatalln("error", err) | |
} | |
defer db.Close() | |
sqlxdb := sqlx.NewDb(db, "sqlite3") | |
if err != nil { | |
log.Fatalln(err) | |
} | |
t.Run("[+] positive while create user must be nill error and inserted id 140", func(t *testing.T) { | |
name := "joni" | |
email := "[email protected]" | |
log.Println("start query") | |
mock.ExpectExec("INSERT INTO users").WithArgs(name, email).WillReturnResult(sqlmock.NewResult(140, 0)) | |
id, err := CreateUser(sqlxdb, name, email) | |
assert.Equal(t, int64(140), id) | |
assert.Nil(t, err) | |
}) | |
t.Run("[-] negative while create user must error", func(t *testing.T) { | |
name := "joni" | |
email := "[email protected]" | |
log.Println("start query") | |
mock.ExpectExec("INSERT INTO users").WithArgs(name, email).WillReturnError(errors.New("INSERT USER ERROR")) | |
_, err := CreateUser(sqlxdb, name, email) | |
assert.Error(t, err) | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment