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 }