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

     1  package mongo_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/etecs-ru/gnomock"
    10  	"github.com/etecs-ru/gnomock/preset/mongo"
    11  	"github.com/stretchr/testify/require"
    12  	"go.mongodb.org/mongo-driver/bson"
    13  	mongodb "go.mongodb.org/mongo-driver/mongo"
    14  	mongooptions "go.mongodb.org/mongo-driver/mongo/options"
    15  )
    16  
    17  func TestPreset(t *testing.T) {
    18  	t.Parallel()
    19  
    20  	for _, version := range []string{"4.4", "3.6.21"} {
    21  		t.Run(version, testPreset(version))
    22  	}
    23  }
    24  
    25  func testPreset(version string) func(t *testing.T) {
    26  	return func(t *testing.T) {
    27  		p := mongo.Preset(
    28  			mongo.WithData("./testdata/"),
    29  			mongo.WithUser("gnomock", "gnomick"),
    30  			mongo.WithVersion(version),
    31  		)
    32  		c, err := gnomock.Start(p, gnomock.WithLogWriter(os.Stdout))
    33  
    34  		defer func() { require.NoError(t, gnomock.Stop(c)) }()
    35  
    36  		require.NoError(t, err)
    37  
    38  		addr := c.DefaultAddress()
    39  		uri := fmt.Sprintf("mongodb://%s:%s@%s", "gnomock", "gnomick", addr)
    40  		clientOptions := mongooptions.Client().ApplyURI(uri)
    41  
    42  		client, err := mongodb.NewClient(clientOptions)
    43  		require.NoError(t, err)
    44  
    45  		ctx := context.Background()
    46  
    47  		err = client.Connect(ctx)
    48  		require.NoError(t, err)
    49  
    50  		// see testdata folder to verify names/numbers
    51  		count, err := client.Database("db1").Collection("users").CountDocuments(ctx, bson.D{})
    52  		require.NoError(t, err)
    53  		require.Equal(t, int64(10), count)
    54  
    55  		count, err = client.Database("db2").Collection("customers").CountDocuments(ctx, bson.D{})
    56  		require.NoError(t, err)
    57  		require.Equal(t, int64(5), count)
    58  
    59  		count, err = client.Database("db2").Collection("countries").CountDocuments(ctx, bson.D{})
    60  		require.NoError(t, err)
    61  		require.Equal(t, int64(3), count)
    62  	}
    63  }
    64  
    65  func TestPreset_withDefaults(t *testing.T) {
    66  	t.Parallel()
    67  
    68  	p := mongo.Preset()
    69  	c, err := gnomock.Start(p)
    70  
    71  	defer func() { require.NoError(t, gnomock.Stop(c)) }()
    72  
    73  	require.NoError(t, err)
    74  
    75  	addr := c.DefaultAddress()
    76  	uri := fmt.Sprintf("mongodb://%s:%s@%s", "gnomock", "gnomick", addr)
    77  	clientOptions := mongooptions.Client().ApplyURI(uri)
    78  
    79  	client, err := mongodb.NewClient(clientOptions)
    80  	require.NoError(t, err)
    81  
    82  	ctx := context.Background()
    83  
    84  	err = client.Connect(ctx)
    85  	require.NoError(t, err)
    86  	require.NoError(t, client.Disconnect(ctx))
    87  }
    88  
    89  func TestPreset_wrongDataFolder(t *testing.T) {
    90  	t.Parallel()
    91  
    92  	p := mongo.Preset(mongo.WithData("./bad-path"))
    93  	c, err := gnomock.Start(p)
    94  	require.Error(t, err)
    95  	require.NoError(t, gnomock.Stop(c))
    96  }