Skip to content

Commit 6fac96c

Browse files
committed
tests: add test for resuse data option
1 parent 829f84c commit 6fac96c

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

embedded_postgres_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,3 +345,79 @@ func Test_CanStartAndStopTwice(t *testing.T) {
345345
shutdownDBAndFail(t, err, database)
346346
}
347347
}
348+
349+
func Test_ReuseData(t *testing.T) {
350+
tempDir, err := ioutil.TempDir("", "embedded_postgres_test")
351+
if err != nil {
352+
panic(err)
353+
}
354+
355+
defer func() {
356+
if err := os.RemoveAll(tempDir); err != nil {
357+
panic(err)
358+
}
359+
}()
360+
361+
database := NewDatabase(DefaultConfig().DataPath(tempDir))
362+
363+
if err := database.Start(); err != nil {
364+
shutdownDBAndFail(t, err, database)
365+
}
366+
367+
db, err := sql.Open("postgres", fmt.Sprintf("host=localhost port=5432 user=postgres password=postgres dbname=postgres sslmode=disable"))
368+
if err != nil {
369+
shutdownDBAndFail(t, err, database)
370+
}
371+
372+
if _, err = db.Exec("CREATE TABLE test(id serial, value text, PRIMARY KEY(id))"); err != nil {
373+
shutdownDBAndFail(t, err, database)
374+
}
375+
376+
if _, err = db.Exec("INSERT INTO test (value) VALUES ('foobar')"); err != nil {
377+
shutdownDBAndFail(t, err, database)
378+
}
379+
380+
if err := db.Close(); err != nil {
381+
shutdownDBAndFail(t, err, database)
382+
}
383+
384+
if err := database.Stop(); err != nil {
385+
shutdownDBAndFail(t, err, database)
386+
}
387+
388+
database = NewDatabase(DefaultConfig().DataPath(tempDir))
389+
390+
if err := database.Start(); err != nil {
391+
shutdownDBAndFail(t, err, database)
392+
}
393+
394+
db, err = sql.Open("postgres", fmt.Sprintf("host=localhost port=5432 user=postgres password=postgres dbname=postgres sslmode=disable"))
395+
if err != nil {
396+
shutdownDBAndFail(t, err, database)
397+
}
398+
399+
if rows, err := db.Query("SELECT * FROM test"); err != nil {
400+
shutdownDBAndFail(t, err, database)
401+
} else if !rows.Next() {
402+
shutdownDBAndFail(t, errors.New("no row from db"), database)
403+
} else {
404+
var (
405+
id int64
406+
value string
407+
)
408+
if err := rows.Scan(&id, &value); err != nil {
409+
shutdownDBAndFail(t, err, database)
410+
}
411+
if value != "foobar" {
412+
shutdownDBAndFail(t, errors.New("wrong value from db"), database)
413+
}
414+
}
415+
416+
if err := db.Close(); err != nil {
417+
shutdownDBAndFail(t, err, database)
418+
}
419+
420+
if err := database.Stop(); err != nil {
421+
shutdownDBAndFail(t, err, database)
422+
}
423+
}

0 commit comments

Comments
 (0)