github.com/etecs-ru/gnomock@v0.13.2/preset/mariadb/preset_test.go (about)

     1  package mariadb_test
     2  
     3  import (
     4  	"database/sql"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/etecs-ru/gnomock"
     9  	"github.com/etecs-ru/gnomock/preset/mariadb"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestPreset(t *testing.T) {
    14  	t.Parallel()
    15  
    16  	queries := `
    17  		insert into t (a) values (1);
    18  		insert into t (a) values (2);
    19  	`
    20  	query := `insert into t (a) values (3);`
    21  	p := mariadb.Preset(
    22  		mariadb.WithUser("Sherlock", "Holmes"),
    23  		mariadb.WithDatabase("books"),
    24  		mariadb.WithQueries(queries, query),
    25  		mariadb.WithQueriesFile("./testdata/queries.sql"),
    26  		mariadb.WithVersion("10.5.8"),
    27  	)
    28  
    29  	container, err := gnomock.Start(p)
    30  
    31  	defer func() { _ = gnomock.Stop(container) }()
    32  
    33  	require.NoError(t, err)
    34  
    35  	addr := container.DefaultAddress()
    36  	connStr := fmt.Sprintf(
    37  		"%s:%s@tcp(%s)/%s",
    38  		"Sherlock", "Holmes", addr, "books",
    39  	)
    40  
    41  	db, err := sql.Open("mysql", connStr)
    42  	require.NoError(t, err)
    43  
    44  	var max, avg, min, count float64
    45  
    46  	rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t")
    47  
    48  	err = rows.Scan(&max, &avg, &min, &count)
    49  	require.NoError(t, err)
    50  
    51  	require.Equal(t, float64(3), max)
    52  	require.Equal(t, float64(2), avg)
    53  	require.Equal(t, float64(1), min)
    54  	require.Equal(t, float64(3), count)
    55  }
    56  
    57  func TestPreset_withDefaults(t *testing.T) {
    58  	t.Parallel()
    59  
    60  	p := mariadb.Preset()
    61  	container, err := gnomock.Start(p)
    62  
    63  	defer func() { _ = gnomock.Stop(container) }()
    64  
    65  	require.NoError(t, err)
    66  
    67  	addr := container.DefaultAddress()
    68  	connStr := fmt.Sprintf(
    69  		"%s:%s@tcp(%s)/%s",
    70  		"Sherlock", "Holmes", addr, "books",
    71  	)
    72  
    73  	db, err := sql.Open("mysql", connStr)
    74  	require.NoError(t, err)
    75  	require.NoError(t, db.Close())
    76  }