$77 GRAYBYTE WORDPRESS FILE MANAGER $20

SERVER : in-mum-web1330.main-hosting.eu #1 SMP Mon Feb 10 22:45:17 UTC 2025
SERVER IP : 93.127.173.63 | ADMIN IP 216.73.216.215
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/go/pkg/mod/go.mongodb.org/mongo-driver@v1.11.3/mongo/

HOME
Current File : /opt/go/pkg/mod/go.mongodb.org/mongo-driver@v1.11.3/mongo//collection_test.go
// Copyright (C) MongoDB, Inc. 2017-present.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

package mongo

import (
	"errors"
	"testing"

	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/internal/testutil/assert"
	"go.mongodb.org/mongo-driver/mongo/options"
	"go.mongodb.org/mongo-driver/mongo/readconcern"
	"go.mongodb.org/mongo-driver/mongo/readpref"
	"go.mongodb.org/mongo-driver/mongo/writeconcern"
)

const (
	testDbName = "unitTestDb"
)

func setupColl(name string, opts ...*options.CollectionOptions) *Collection {
	db := setupDb(testDbName)
	return db.Collection(name, opts...)
}

func compareColls(t *testing.T, expected *Collection, got *Collection) {
	assert.Equal(t, expected.readPreference, got.readPreference,
		"mismatch; expected read preference %v, got %v", expected.readPreference, got.readPreference)
	assert.Equal(t, expected.readConcern, got.readConcern,
		"mismatch; expected read concern %v, got %v", expected.readConcern, got.readConcern)
	assert.Equal(t, expected.writeConcern, got.writeConcern,
		"mismatch; expected write concern %v, got %v", expected.writeConcern, got.writeConcern)
}

func TestCollection(t *testing.T) {
	t.Run("initialize", func(t *testing.T) {
		name := "foo"
		coll := setupColl(name)
		assert.Equal(t, name, coll.Name(), "expected coll name %v, got %v", name, coll.Name())
		assert.NotNil(t, coll.Database(), "expected valid database, got nil")
	})
	t.Run("specified options", func(t *testing.T) {
		rpPrimary := readpref.Primary()
		rpSecondary := readpref.Secondary()
		wc1 := writeconcern.New(writeconcern.W(5))
		wc2 := writeconcern.New(writeconcern.W(10))
		rcLocal := readconcern.Local()
		rcMajority := readconcern.Majority()

		opts := options.Collection().SetReadPreference(rpPrimary).SetReadConcern(rcLocal).SetWriteConcern(wc1).
			SetReadPreference(rpSecondary).SetReadConcern(rcMajority).SetWriteConcern(wc2)
		expected := &Collection{
			readConcern:    rcMajority,
			readPreference: rpSecondary,
			writeConcern:   wc2,
		}
		got := setupColl("foo", opts)
		compareColls(t, expected, got)
	})
	t.Run("inherit options", func(t *testing.T) {
		rpPrimary := readpref.Primary()
		rcLocal := readconcern.Local()
		wc1 := writeconcern.New(writeconcern.W(10))

		db := setupDb("foo", options.Database().SetReadPreference(rpPrimary).SetReadConcern(rcLocal))
		coll := db.Collection("bar", options.Collection().SetWriteConcern(wc1))
		expected := &Collection{
			readPreference: rpPrimary,
			readConcern:    rcLocal,
			writeConcern:   wc1,
		}
		compareColls(t, expected, coll)
	})
	t.Run("replace topology error", func(t *testing.T) {
		coll := setupColl("foo")
		doc := bson.D{}
		update := bson.D{{"$update", bson.D{{"x", 1}}}}

		_, err := coll.InsertOne(bgCtx, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.InsertMany(bgCtx, []interface{}{doc})
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.DeleteOne(bgCtx, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.DeleteMany(bgCtx, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.UpdateOne(bgCtx, doc, update)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.UpdateMany(bgCtx, doc, update)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.ReplaceOne(bgCtx, doc, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.Aggregate(bgCtx, Pipeline{})
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.EstimatedDocumentCount(bgCtx)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.CountDocuments(bgCtx, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.Distinct(bgCtx, "x", doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		_, err = coll.Find(bgCtx, doc)
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		err = coll.FindOne(bgCtx, doc).Err()
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		err = coll.FindOneAndDelete(bgCtx, doc).Err()
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		err = coll.FindOneAndReplace(bgCtx, doc, doc).Err()
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)

		err = coll.FindOneAndUpdate(bgCtx, doc, update).Err()
		assert.Equal(t, ErrClientDisconnected, err, "expected error %v, got %v", ErrClientDisconnected, err)
	})
	t.Run("database accessor", func(t *testing.T) {
		coll := setupColl("bar")
		dbName := coll.Database().Name()
		assert.Equal(t, testDbName, dbName, "expected db name %v, got %v", testDbName, dbName)
	})
	t.Run("nil document error", func(t *testing.T) {
		coll := setupColl("foo")
		doc := bson.D{}

		_, err := coll.InsertOne(bgCtx, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.InsertMany(bgCtx, nil)
		assert.Equal(t, ErrEmptySlice, err, "expected error %v, got %v", ErrEmptySlice, err)

		_, err = coll.InsertMany(bgCtx, []interface{}{})
		assert.Equal(t, ErrEmptySlice, err, "expected error %v, got %v", ErrEmptySlice, err)

		_, err = coll.DeleteOne(bgCtx, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.DeleteMany(bgCtx, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.UpdateOne(bgCtx, nil, doc)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.UpdateOne(bgCtx, doc, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.UpdateMany(bgCtx, nil, doc)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.UpdateMany(bgCtx, doc, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.ReplaceOne(bgCtx, nil, doc)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.ReplaceOne(bgCtx, doc, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.CountDocuments(bgCtx, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.Distinct(bgCtx, "x", nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.Find(bgCtx, nil)
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOne(bgCtx, nil).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOneAndDelete(bgCtx, nil).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOneAndReplace(bgCtx, nil, doc).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOneAndReplace(bgCtx, doc, nil).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOneAndUpdate(bgCtx, nil, doc).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		err = coll.FindOneAndUpdate(bgCtx, doc, nil).Err()
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		_, err = coll.BulkWrite(bgCtx, nil)
		assert.Equal(t, ErrEmptySlice, err, "expected error %v, got %v", ErrEmptySlice, err)

		_, err = coll.BulkWrite(bgCtx, []WriteModel{})
		assert.Equal(t, ErrEmptySlice, err, "expected error %v, got %v", ErrEmptySlice, err)

		_, err = coll.BulkWrite(bgCtx, []WriteModel{nil})
		assert.Equal(t, ErrNilDocument, err, "expected error %v, got %v", ErrNilDocument, err)

		aggErr := errors.New("can only transform slices and arrays into aggregation pipelines, but got invalid")
		_, err = coll.Aggregate(bgCtx, nil)
		assert.Equal(t, aggErr, err, "expected error %v, got %v", aggErr, err)

		_, err = coll.Watch(bgCtx, nil)
		assert.Equal(t, aggErr, err, "expected error %v, got %v", aggErr, err)
	})
}

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 12.00 AM
root / root
0
address
--
25 Jan 2024 4.43 PM
root / root
0555
description
--
25 Jan 2024 4.43 PM
root / root
0555
gridfs
--
25 Jan 2024 4.43 PM
root / root
0555
integration
--
25 Jan 2024 4.43 PM
root / root
0555
options
--
25 Jan 2024 4.43 PM
root / root
0555
readconcern
--
25 Jan 2024 4.43 PM
root / root
0555
readpref
--
25 Jan 2024 4.43 PM
root / root
0555
writeconcern
--
25 Jan 2024 4.43 PM
root / root
0555
batch_cursor.go
1.56 KB
25 Jan 2024 4.43 PM
root / root
0444
bson_helpers_test.go
2.208 KB
25 Jan 2024 4.43 PM
root / root
0444
bulk_write.go
16.054 KB
25 Jan 2024 4.43 PM
root / root
0444
bulk_write_models.go
12.305 KB
25 Jan 2024 4.43 PM
root / root
0444
change_stream.go
22.284 KB
25 Jan 2024 4.43 PM
root / root
0444
change_stream_deployment.go
1.351 KB
25 Jan 2024 4.43 PM
root / root
0444
change_stream_test.go
0.857 KB
25 Jan 2024 4.43 PM
root / root
0444
client.go
28.838 KB
25 Jan 2024 4.43 PM
root / root
0444
client_encryption.go
12.148 KB
25 Jan 2024 4.43 PM
root / root
0444
client_examples_test.go
15.06 KB
25 Jan 2024 4.43 PM
root / root
0444
client_side_encryption_examples_test.go
11.118 KB
25 Jan 2024 4.43 PM
root / root
0444
client_test.go
18.347 KB
25 Jan 2024 4.43 PM
root / root
0444
collection.go
58.865 KB
25 Jan 2024 4.43 PM
root / root
0444
collection_test.go
8.775 KB
25 Jan 2024 4.43 PM
root / root
0444
crud_examples_test.go
30.029 KB
25 Jan 2024 4.43 PM
root / root
0444
crypt_retrievers.go
1.786 KB
25 Jan 2024 4.43 PM
root / root
0444
cursor.go
10.557 KB
25 Jan 2024 4.43 PM
root / root
0444
cursor_test.go
7.092 KB
25 Jan 2024 4.43 PM
root / root
0444
database.go
27.19 KB
25 Jan 2024 4.43 PM
root / root
0444
database_test.go
4.198 KB
25 Jan 2024 4.43 PM
root / root
0444
doc.go
5.937 KB
25 Jan 2024 4.43 PM
root / root
0444
errors.go
19.745 KB
25 Jan 2024 4.43 PM
root / root
0444
errors_test.go
1.866 KB
25 Jan 2024 4.43 PM
root / root
0444
index_options_builder.go
6.528 KB
25 Jan 2024 4.43 PM
root / root
0444
index_view.go
15.269 KB
25 Jan 2024 4.43 PM
root / root
0444
main_test.go
1.496 KB
25 Jan 2024 4.43 PM
root / root
0444
mongo.go
12.521 KB
25 Jan 2024 4.43 PM
root / root
0444
mongo_test.go
12.931 KB
25 Jan 2024 4.43 PM
root / root
0444
mongocryptd.go
5.07 KB
25 Jan 2024 4.43 PM
root / root
0444
ocsp_test.go
2.348 KB
25 Jan 2024 4.43 PM
root / root
0444
read_write_concern_spec_test.go
8.521 KB
25 Jan 2024 4.43 PM
root / root
0444
results.go
9.236 KB
25 Jan 2024 4.43 PM
root / root
0444
results_test.go
2.571 KB
25 Jan 2024 4.43 PM
root / root
0444
session.go
13.816 KB
25 Jan 2024 4.43 PM
root / root
0444
single_result.go
3.84 KB
25 Jan 2024 4.43 PM
root / root
0444
single_result_test.go
4.047 KB
25 Jan 2024 4.43 PM
root / root
0444
util.go
0.277 KB
25 Jan 2024 4.43 PM
root / root
0444
with_transactions_test.go
23.404 KB
25 Jan 2024 4.43 PM
root / root
0444

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF