Skip to content

Commit bf25287

Browse files
committed
Scala 2.13: Fix crud spec for scala 2.13
SCALA-506
1 parent b37763a commit bf25287

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

driver/src/it/scala/org/mongodb/scala/CrudSpec.scala

+20-18
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
4747
val definition = BsonDocument(Source.fromFile(file).getLines.mkString)
4848
database = Some(client.getDatabase(definition.getString("database_name", BsonString(databaseName)).getValue))
4949
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
5252

5353
if (serverAtLeastMinVersion(definition) && serverLessThanMaxVersion(definition)) forEvery(tests) { (test: BsonDocument) =>
5454
val description = test.getString("description").getValue
@@ -74,7 +74,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
7474

7575
if (expectedOutcome.containsKey("collection")) {
7676
val collectionData = expectedOutcome.getDocument("collection")
77-
val expectedDocuments = collectionData.getArray("data").asScala.map(_.asDocument())
77+
val expectedDocuments = collectionData.getArray("data").asScala.map(_.asDocument()).toSeq
7878
var coll = collection.get
7979
if (collectionData.containsKey("name")) {
8080
coll = database.get.getCollection[BsonDocument](collectionData.getString("name").getValue)
@@ -89,7 +89,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
8989

9090
def collectionValues(database: MongoDatabase, outcome: BsonDocument): (Seq[BsonDocument], Seq[BsonDocument]) = {
9191
val collectionData = outcome.getDocument("collection")
92-
val expectedDocuments = collectionData.getArray("data").asScala.map(_.asDocument())
92+
val expectedDocuments = collectionData.getArray("data").asScala.map(_.asDocument()).toSeq
9393
val coll = if (collectionData.containsKey("name")) {
9494
database.getCollection[BsonDocument](collectionData.getString("name").getValue)
9595
} else {
@@ -171,7 +171,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
171171
arrayFilters.append(cur.asDocument)
172172
}
173173
}
174-
arrayFilters
174+
arrayFilters.toSeq
175175
}
176176

177177
private def toResult(bulkWriteResult: BulkWriteResult, writeModels: Seq[_ <: WriteModel[BsonDocument]],
@@ -202,15 +202,15 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
202202
}
203203

204204
private def doAggregation(arguments: BsonDocument) = {
205-
val pipeline = arguments.getArray("pipeline").asScala.map(_.asDocument())
205+
val pipeline = arguments.getArray("pipeline").asScala.map(_.asDocument()).toSeq
206206
val observable = collection.get.aggregate[BsonDocument](pipeline)
207207
if (arguments.containsKey("collation")) observable.collation(getCollation(arguments.getDocument("collation")))
208208
BsonArray(observable.futureValue)
209209
}
210210

211211
private def doDatabaseAggregate(arguments: BsonDocument) = {
212212
assume(!isSharded)
213-
val pipeline = arguments.getArray("pipeline").asScala.map(_.asDocument())
213+
val pipeline = arguments.getArray("pipeline").asScala.map(_.asDocument()).toSeq
214214
val observable = database.get.aggregate[BsonDocument](pipeline)
215215

216216
if (arguments.containsKey("allowDiskUse")) observable.allowDiskUse(arguments.getBoolean("allowDiskUse").getValue)
@@ -251,34 +251,36 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
251251
}
252252

253253
private def doBulkWrite(arguments: BsonDocument): BsonDocument = {
254-
val writeModels = mutable.ListBuffer[WriteModel[BsonDocument]]()
254+
val mutableWriteModels = mutable.ListBuffer[WriteModel[BsonDocument]]()
255255
for (bsonValue: BsonValue <- arguments.getArray("requests").asScala) {
256256
val cur: BsonDocument = bsonValue.asDocument
257257
val name: String = cur.getString("name").getValue
258258
val requestArguments: BsonDocument = cur.getDocument("arguments")
259259

260260
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"),
263263
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"),
265265
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"),
267267
getDeleteOptions(requestArguments)))
268-
case "deleteMany" => writeModels.append(new DeleteManyModel[BsonDocument](requestArguments.getDocument("filter"),
268+
case "deleteMany" => mutableWriteModels.append(new DeleteManyModel[BsonDocument](requestArguments.getDocument("filter"),
269269
getDeleteOptions(requestArguments)))
270-
case "replaceOne" => writeModels.append(new ReplaceOneModel[BsonDocument](requestArguments.getDocument("filter"),
270+
case "replaceOne" => mutableWriteModels.append(new ReplaceOneModel[BsonDocument](requestArguments.getDocument("filter"),
271271
requestArguments.getDocument("replacement"), getReplaceOptions(requestArguments)))
272272
case _ => throw new UnsupportedOperationException(s"Unsupported write request type: $name")
273273
}
274274
}
275275

276+
val writeModels = mutableWriteModels.toSeq
277+
276278
Try( collection.get.bulkWrite(writeModels, new BulkWriteOptions().ordered(arguments.getDocument("options", BsonDocument())
277279
.getBoolean("ordered", BsonBoolean(true)).getValue)).futureValue) match {
278280
case Success(bulkWriteResult: BulkWriteResult) => toResult(bulkWriteResult, writeModels, Seq[BulkWriteError]())
279281
case Failure(e: TestFailedException) if e.getCause.isInstanceOf[MongoBulkWriteException] => {
280282
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)
282284
result.put("error", BsonBoolean(true))
283285
result
284286
}
@@ -360,7 +362,7 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
360362
}
361363

362364
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
364366
val options = new InsertManyOptions().ordered(arguments.getDocument("options", BsonDocument())
365367
.getBoolean("ordered", BsonBoolean(true)).getValue)
366368
Try(collection.get.insertMany(documents, options).futureValue) match {
@@ -372,8 +374,8 @@ class CrudSpec extends RequiresMongoDBISpec with FuturesSpec {
372374
// Test results are expecting this to look just like bulkWrite error, so translate to InsertOneModel so the result
373375
// translation code can be reused.
374376
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)
377379
result.put("error", BsonBoolean(true))
378380
result
379381
}

0 commit comments

Comments
 (0)