@@ -8,17 +8,20 @@ package mongo
88
99import  (
1010	"bytes" 
11+ 	"context" 
1112	"errors" 
1213	"testing" 
1314
1415	"go.mongodb.org/mongo-driver/v2/bson" 
1516	"go.mongodb.org/mongo-driver/v2/internal/assert" 
1617	"go.mongodb.org/mongo-driver/v2/internal/ptrutil" 
18+ 	"go.mongodb.org/mongo-driver/v2/internal/require" 
1719	"go.mongodb.org/mongo-driver/v2/mongo/options" 
1820	"go.mongodb.org/mongo-driver/v2/mongo/readconcern" 
1921	"go.mongodb.org/mongo-driver/v2/mongo/readpref" 
2022	"go.mongodb.org/mongo-driver/v2/mongo/writeconcern" 
2123	"go.mongodb.org/mongo-driver/v2/x/bsonx/bsoncore" 
24+ 	"go.mongodb.org/mongo-driver/v2/x/mongo/driver/topology" 
2225)
2326
2427const  (
@@ -78,6 +81,65 @@ func TestCollection(t *testing.T) {
7881		}
7982		compareColls (t , expected , coll )
8083	})
84+ 	t .Run ("replaceErrors for disconnected topology" , func (t  * testing.T ) {
85+ 		coll  :=  setupColl ("foo" )
86+ 		doc  :=  bson.D {}
87+ 		update  :=  bson.D {{"$update" , bson.D {{"x" , 1 }}}}
88+ 
89+ 		topo , ok  :=  coll .client .deployment .(* topology.Topology )
90+ 		require .True (t , ok , "client deployment is not a topology" )
91+ 
92+ 		err  :=  topo .Disconnect (context .Background ())
93+ 		require .NoError (t , err )
94+ 
95+ 		_ , err  =  coll .InsertOne (bgCtx , doc )
96+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
97+ 
98+ 		_ , err  =  coll .InsertMany (bgCtx , []interface {}{doc })
99+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
100+ 
101+ 		_ , err  =  coll .DeleteOne (bgCtx , doc )
102+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
103+ 
104+ 		_ , err  =  coll .DeleteMany (bgCtx , doc )
105+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
106+ 
107+ 		_ , err  =  coll .UpdateOne (bgCtx , doc , update )
108+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
109+ 
110+ 		_ , err  =  coll .UpdateMany (bgCtx , doc , update )
111+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
112+ 
113+ 		_ , err  =  coll .ReplaceOne (bgCtx , doc , doc )
114+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
115+ 
116+ 		_ , err  =  coll .Aggregate (bgCtx , Pipeline {})
117+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
118+ 
119+ 		_ , err  =  coll .EstimatedDocumentCount (bgCtx )
120+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
121+ 
122+ 		_ , err  =  coll .CountDocuments (bgCtx , doc )
123+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
124+ 
125+ 		err  =  coll .Distinct (bgCtx , "x" , doc ).Err ()
126+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
127+ 
128+ 		_ , err  =  coll .Find (bgCtx , doc )
129+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
130+ 
131+ 		err  =  coll .FindOne (bgCtx , doc ).Err ()
132+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
133+ 
134+ 		err  =  coll .FindOneAndDelete (bgCtx , doc ).Err ()
135+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
136+ 
137+ 		err  =  coll .FindOneAndReplace (bgCtx , doc , doc ).Err ()
138+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
139+ 
140+ 		err  =  coll .FindOneAndUpdate (bgCtx , doc , update ).Err ()
141+ 		assert .Equal (t , ErrClientDisconnected , err , "expected error %v, got %v" , ErrClientDisconnected , err )
142+ 	})
81143	t .Run ("database accessor" , func (t  * testing.T ) {
82144		coll  :=  setupColl ("bar" )
83145		dbName  :=  coll .Database ().Name ()
0 commit comments