@@ -47,8 +47,8 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
47
47
val definition = BsonDocument (Source .fromFile(file).getLines.mkString)
48
48
database = Some (client.getDatabase(definition.getString(" database_name" , BsonString (databaseName)).getValue))
49
49
collection = Some (database.get.getCollection(collectionName))
50
- val data = definition.getArray(" data" ).asScala.map(_.asDocument())
51
- val tests = definition.getArray(" tests" ).asScala.map(_.asDocument())
50
+ val data = definition.getArray(" data" ).asScala.map(_.asDocument()).toSeq
51
+ val tests = definition.getArray(" tests" ).asScala.map(_.asDocument()).toSeq
52
52
53
53
if (serverAtLeastMinVersion(definition) && serverLessThanMaxVersion(definition)) forEvery(tests) { (test : BsonDocument ) =>
54
54
val description = test.getString(" description" ).getValue
@@ -74,7 +74,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
74
74
75
75
if (expectedOutcome.containsKey(" collection" )) {
76
76
val collectionData = expectedOutcome.getDocument(" collection" )
77
- val expectedDocuments = collectionData.getArray(" data" ).asScala.map(_.asDocument())
77
+ val expectedDocuments = collectionData.getArray(" data" ).asScala.map(_.asDocument()).toSeq
78
78
var coll = collection.get
79
79
if (collectionData.containsKey(" name" )) {
80
80
coll = database.get.getCollection[BsonDocument ](collectionData.getString(" name" ).getValue)
@@ -89,7 +89,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
89
89
90
90
def collectionValues (database : MongoDatabase , outcome : BsonDocument ): (Seq [BsonDocument ], Seq [BsonDocument ]) = {
91
91
val collectionData = outcome.getDocument(" collection" )
92
- val expectedDocuments = collectionData.getArray(" data" ).asScala.map(_.asDocument())
92
+ val expectedDocuments = collectionData.getArray(" data" ).asScala.map(_.asDocument()).toSeq
93
93
val coll = if (collectionData.containsKey(" name" )) {
94
94
database.getCollection[BsonDocument ](collectionData.getString(" name" ).getValue)
95
95
} else {
@@ -171,7 +171,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
171
171
arrayFilters.append(cur.asDocument)
172
172
}
173
173
}
174
- arrayFilters
174
+ arrayFilters.toSeq
175
175
}
176
176
177
177
private def toResult (bulkWriteResult : BulkWriteResult , writeModels : Seq [_ <: WriteModel [BsonDocument ]],
@@ -202,15 +202,15 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
202
202
}
203
203
204
204
private def doAggregation (arguments : BsonDocument ) = {
205
- val pipeline = arguments.getArray(" pipeline" ).asScala.map(_.asDocument())
205
+ val pipeline = arguments.getArray(" pipeline" ).asScala.map(_.asDocument()).toSeq
206
206
val observable = collection.get.aggregate[BsonDocument ](pipeline)
207
207
if (arguments.containsKey(" collation" )) observable.collation(getCollation(arguments.getDocument(" collation" )))
208
208
BsonArray (observable.futureValue)
209
209
}
210
210
211
211
private def doDatabaseAggregate (arguments : BsonDocument ) = {
212
212
assume(! isSharded)
213
- val pipeline = arguments.getArray(" pipeline" ).asScala.map(_.asDocument())
213
+ val pipeline = arguments.getArray(" pipeline" ).asScala.map(_.asDocument()).toSeq
214
214
val observable = database.get.aggregate[BsonDocument ](pipeline)
215
215
216
216
if (arguments.containsKey(" allowDiskUse" )) observable.allowDiskUse(arguments.getBoolean(" allowDiskUse" ).getValue)
@@ -251,34 +251,36 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
251
251
}
252
252
253
253
private def doBulkWrite (arguments : BsonDocument ): BsonDocument = {
254
- val writeModels = mutable.ListBuffer [WriteModel [BsonDocument ]]()
254
+ val mutableWriteModels = mutable.ListBuffer [WriteModel [BsonDocument ]]()
255
255
for (bsonValue : BsonValue <- arguments.getArray(" requests" ).asScala) {
256
256
val cur : BsonDocument = bsonValue.asDocument
257
257
val name : String = cur.getString(" name" ).getValue
258
258
val requestArguments : BsonDocument = cur.getDocument(" arguments" )
259
259
260
260
name match {
261
- case " insertOne" => writeModels .append(new InsertOneModel [BsonDocument ](requestArguments.getDocument(" document" )))
262
- case " updateOne" => writeModels .append(new UpdateOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
261
+ case " insertOne" => mutableWriteModels .append(new InsertOneModel [BsonDocument ](requestArguments.getDocument(" document" )))
262
+ case " updateOne" => mutableWriteModels .append(new UpdateOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
263
263
requestArguments.getDocument(" update" ), getUpdateOptions(requestArguments)))
264
- case " updateMany" => writeModels .append(new UpdateManyModel [BsonDocument ](requestArguments.getDocument(" filter" ),
264
+ case " updateMany" => mutableWriteModels .append(new UpdateManyModel [BsonDocument ](requestArguments.getDocument(" filter" ),
265
265
requestArguments.getDocument(" update" ), getUpdateOptions(requestArguments)))
266
- case " deleteOne" => writeModels .append(new DeleteOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
266
+ case " deleteOne" => mutableWriteModels .append(new DeleteOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
267
267
getDeleteOptions(requestArguments)))
268
- case " deleteMany" => writeModels .append(new DeleteManyModel [BsonDocument ](requestArguments.getDocument(" filter" ),
268
+ case " deleteMany" => mutableWriteModels .append(new DeleteManyModel [BsonDocument ](requestArguments.getDocument(" filter" ),
269
269
getDeleteOptions(requestArguments)))
270
- case " replaceOne" => writeModels .append(new ReplaceOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
270
+ case " replaceOne" => mutableWriteModels .append(new ReplaceOneModel [BsonDocument ](requestArguments.getDocument(" filter" ),
271
271
requestArguments.getDocument(" replacement" ), getReplaceOptions(requestArguments)))
272
272
case _ => throw new UnsupportedOperationException (s " Unsupported write request type: $name" )
273
273
}
274
274
}
275
275
276
+ val writeModels = mutableWriteModels.toSeq
277
+
276
278
Try ( collection.get.bulkWrite(writeModels, new BulkWriteOptions ().ordered(arguments.getDocument(" options" , BsonDocument ())
277
279
.getBoolean(" ordered" , BsonBoolean (true )).getValue)).futureValue) match {
278
280
case Success (bulkWriteResult : BulkWriteResult ) => toResult(bulkWriteResult, writeModels, Seq [BulkWriteError ]())
279
281
case Failure (e : TestFailedException ) if e.getCause.isInstanceOf [MongoBulkWriteException ] => {
280
282
val exception = e.getCause.asInstanceOf [MongoBulkWriteException ]
281
- val result : BsonDocument = toResult(exception.getWriteResult, writeModels, exception.getWriteErrors.asScala)
283
+ val result : BsonDocument = toResult(exception.getWriteResult, writeModels, exception.getWriteErrors.asScala.toSeq )
282
284
result.put(" error" , BsonBoolean (true ))
283
285
result
284
286
}
@@ -360,7 +362,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
360
362
}
361
363
362
364
private def doInsertMany (arguments : BsonDocument ): BsonValue = {
363
- val documents = arguments.getArray(" documents" ).asScala.map(_.asDocument())
365
+ val documents = arguments.getArray(" documents" ).asScala.map(_.asDocument()).toSeq
364
366
val options = new InsertManyOptions ().ordered(arguments.getDocument(" options" , BsonDocument ())
365
367
.getBoolean(" ordered" , BsonBoolean (true )).getValue)
366
368
Try (collection.get.insertMany(documents, options).futureValue) match {
@@ -372,8 +374,8 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
372
374
// Test results are expecting this to look just like bulkWrite error, so translate to InsertOneModel so the result
373
375
// translation code can be reused.
374
376
val exception = e.getCause.asInstanceOf [MongoBulkWriteException ]
375
- val writeModels = arguments.getArray(" documents" ).asScala.map(doc => new InsertOneModel [BsonDocument ](doc.asDocument))
376
- val result : BsonDocument = toResult(exception.getWriteResult, writeModels, exception.getWriteErrors.asScala)
377
+ val writeModels = arguments.getArray(" documents" ).asScala.map(doc => new InsertOneModel [BsonDocument ](doc.asDocument)).toSeq
378
+ val result : BsonDocument = toResult(exception.getWriteResult, writeModels, exception.getWriteErrors.asScala.toSeq )
377
379
result.put(" error" , BsonBoolean (true ))
378
380
result
379
381
}
0 commit comments