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

     1  # Gnomock MongoDB
     2  
     3  Gnomock MongoDB is a [Gnomock](https://github.com/orlangure/gnomock) preset for running tests against a real MongoDB
     4  container, without mocks.
     5  
     6  ```go
     7  package mongo_test
     8  
     9  import (
    10  	"context"
    11  	"fmt"
    12  
    13  	"github.com/orlangure/gnomock"
    14  	"github.com/orlangure/gnomock/preset/mongo"
    15  	"go.mongodb.org/mongo-driver/bson"
    16  	mongodb "go.mongodb.org/mongo-driver/mongo"
    17  	mongooptions "go.mongodb.org/mongo-driver/mongo/options"
    18  )
    19  
    20  func ExamplePreset() {
    21  	p := mongo.Preset(
    22  		mongo.WithData("./testdata/"),
    23  		mongo.WithUser("gnomock", "gnomick"),
    24  	)
    25  	c, err := gnomock.Start(p)
    26  
    27  	defer func() { _ = gnomock.Stop(c) }()
    28  
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  
    33  	addr := c.DefaultAddress()
    34  	uri := fmt.Sprintf("mongodb://%s:%s@%s", "gnomock", "gnomick", addr)
    35  	clientOptions := mongooptions.Client().ApplyURI(uri)
    36  
    37  	client, err := mongodb.NewClient(clientOptions)
    38  	if err != nil {
    39  		panic(err)
    40  	}
    41  
    42  	ctx := context.Background()
    43  
    44  	err = client.Connect(ctx)
    45  	if err != nil {
    46  		panic(err)
    47  	}
    48  
    49  	// see testdata folder to verify names/numbers
    50  	fmt.Println(client.Database("db1").Collection("users").CountDocuments(ctx, bson.D{}))
    51  	fmt.Println(client.Database("db2").Collection("customers").CountDocuments(ctx, bson.D{}))
    52  	fmt.Println(client.Database("db2").Collection("countries").CountDocuments(ctx, bson.D{}))
    53  
    54  	// Output:
    55  	// 10 <nil>
    56  	// 5 <nil>
    57  	// 3 <nil>
    58  }
    59  ```