From 4f9b336934b513b7ffbd9db829ea7159ff4c4b3f Mon Sep 17 00:00:00 2001 From: Daniel Slapman Date: Sun, 5 Jan 2025 14:36:49 +0100 Subject: [PATCH] Fix `:+` operator --- .../src/main/scala/oolong/bson/bson.scala | 2 +- .../scala/oolong/bson/BsonMergeSpec.scala | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 oolong-bson/src/test/scala/oolong/bson/BsonMergeSpec.scala diff --git a/oolong-bson/src/main/scala/oolong/bson/bson.scala b/oolong-bson/src/main/scala/oolong/bson/bson.scala index fc2eabb..11702fb 100644 --- a/oolong-bson/src/main/scala/oolong/bson/bson.scala +++ b/oolong-bson/src/main/scala/oolong/bson/bson.scala @@ -76,7 +76,7 @@ extension (bv: BsonValue) * * In a case of key collision bson1 values takes priority */ - @inline def :+(other: BsonValue): BsonValue = merge(other, bv, false) + @inline def :+(other: BsonValue): BsonValue = merge(bv, other, false) /** * Merges two bson values diff --git a/oolong-bson/src/test/scala/oolong/bson/BsonMergeSpec.scala b/oolong-bson/src/test/scala/oolong/bson/BsonMergeSpec.scala new file mode 100644 index 0000000..c993270 --- /dev/null +++ b/oolong-bson/src/test/scala/oolong/bson/BsonMergeSpec.scala @@ -0,0 +1,25 @@ +package oolong.bson + +import org.mongodb.scala.bson.* +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.matchers.should.Matchers + +class BsonMergeSpec extends AnyFunSuite with Matchers { + test(":+ document merge") { + val doc1 = BsonDocument("field1" -> 10, "field2" -> 30) + val doc2 = BsonDocument("field1" -> 20, "field3" -> 40) + + val res = doc1 :+ doc2 + + res shouldBe BsonDocument("field1" -> 10, "field2" -> 30, "field3" -> 40) + } + + test("+: document merge") { + val doc1 = BsonDocument("field1" -> 10, "field2" -> 30) + val doc2 = BsonDocument("field1" -> 20, "field3" -> 40) + + val res = doc1 +: doc2 + + res shouldBe BsonDocument("field1" -> 20, "field2" -> 30, "field3" -> 40) + } +}