@@ -14,9 +14,11 @@ import java.util.*
1414import kotlin.test.*
1515
1616// :snippet-start: bulk-data-model
17- data class SampleDoc (
17+ data class Person (
1818 @BsonId val id : Int ,
19- val x : Int? = null
19+ val name : String ,
20+ val age : Int? = null ,
21+ val location : String? = null
2022)
2123// :snippet-end:
2224
@@ -26,15 +28,16 @@ internal class BulkTest {
2628 val config = getConfig()
2729 val client = MongoClient .create(config.connectionUri)
2830 val database = client.getDatabase(" sample_db" )
29- val collection = database.getCollection<SampleDoc >(" sample_docs " )
31+ val collection = database.getCollection<Person >(" people " )
3032
3133 @BeforeAll
3234 @JvmStatic
3335 fun beforeAll () {
3436 runBlocking {
3537 val sampleDocuments = listOf (
36- SampleDoc (1 ),
37- SampleDoc (2 )
38+ Person (1 , " Karen Sandoval" , 31 ),
39+ Person (2 , " William Chin" , 54 ),
40+ Person (8 , " Shayla Ray" , 20 )
3841 )
3942 collection.insertMany(sampleDocuments)
4043 }
@@ -53,16 +56,14 @@ internal class BulkTest {
5356 @Test
5457 fun insertOperationTest () = runBlocking {
5558 // :snippet-start: insert-one
56- val doc3 = InsertOneModel (SampleDoc ( 3 ))
57- val doc4 = InsertOneModel (SampleDoc ( 4 ))
59+ val juneDoc = InsertOneModel (Person ( 3 , " June Carrie " , 17 ))
60+ val kevinDoc = InsertOneModel (Person ( 4 , " Kevin Moss " , 22 ))
5861 // :snippet-end:
5962 // :snippet-start: bulk-write-exception
60- val doc5 = InsertOneModel (SampleDoc (1 ))
61- val doc6 = InsertOneModel (SampleDoc (3 ))
6263 try {
6364 val bulkOperations = listOf (
64- (doc5 ),
65- (doc6 )
65+ (InsertOneModel ( Person ( 1 , " James Smith " , 13 )) ),
66+ (InsertOneModel ( Person ( 3 , " Colin Samuels " )) )
6667 )
6768 val bulkWrite = collection.bulkWrite(bulkOperations)
6869 assertFalse(bulkWrite.wasAcknowledged()) // :remove:
@@ -72,8 +73,9 @@ internal class BulkTest {
7273 // :snippet-end:
7374 // Junit test for the above code
7475 val expected = listOf (
75- SampleDoc (1 ),
76- SampleDoc (2 )
76+ Person (1 , " Karen Sandoval" , 31 ),
77+ Person (2 , " William Chin" , 54 ),
78+ Person (8 , " Shayla Ray" , 20 )
7779 )
7880 assertEquals(expected, collection.find().toList())
7981 }
@@ -82,7 +84,7 @@ internal class BulkTest {
8284 fun replaceOneTest () = runBlocking {
8385 // :snippet-start: replace-one
8486 val filter = Filters .eq(" _id" , 1 )
85- val insert = SampleDoc (1 , 4 )
87+ val insert = Person (1 , " Celine Stork " , location = " San Diego, CA " )
8688 val doc = ReplaceOneModel (filter, insert)
8789 // :snippet-end:
8890 // Junit test for the above code
@@ -94,8 +96,8 @@ internal class BulkTest {
9496 fun updateOneTest () = runBlocking {
9597 // :snippet-start: update-one
9698 val filter = Filters .eq(" _id" , 2 )
97- val update = Updates .set( SampleDoc ::x .name, 8 )
98- val doc = UpdateOneModel <SampleDoc >(filter, update)
99+ val update = Updates .inc( Person ::age .name, 1 )
100+ val doc = UpdateOneModel <Person >(filter, update)
99101 // :snippet-end:
100102 // Junit test for the above code
101103 val updateTest = collection.bulkWrite(listOf (doc))
@@ -105,66 +107,71 @@ internal class BulkTest {
105107 @Test
106108 fun deleteOneTest () = runBlocking {
107109 // :snippet-start: delete
108- val filter = Filters .eq(" _id" , 1 )
109- val doc = DeleteOneModel < SampleDoc >(filter )
110+ val deleteId1 = DeleteOneModel < Person >( Filters .eq(" _id" , 1 ) )
111+ val deleteAgeLt30 = DeleteManyModel < Person >( Filters .lt( Person ::age.name, 30 ) )
110112 // :snippet-end:
111113 // Junit test for the above code
112- val deleteTest = collection.bulkWrite(listOf (doc ))
114+ val deleteTest = collection.bulkWrite(listOf (deleteId1, deleteAgeLt30 ))
113115 assertTrue(deleteTest.wasAcknowledged())
114- assertTrue(collection.find(filter).toList().isEmpty())
116+ val expected = listOf (
117+ Person (2 , " William Chin" , 54 ),
118+ )
119+ assertEquals(expected, collection.find().toList())
115120 }
116121
117122 @Test
118123 fun orderOfOperationsTest () = runBlocking {
119124 // :snippet-start: ordered
120- val doc1 = InsertOneModel (SampleDoc ( 3 ))
121- val doc2 = ReplaceOneModel (
125+ val insertMdl = InsertOneModel (Person ( 6 , " Zaynab Omar " , 37 ))
126+ val replaceMdl = ReplaceOneModel (
122127 Filters .eq(" _id" , 1 ),
123- SampleDoc (1 , 2 )
128+ Person (1 , " Sandy Kane " , location = " Helena, MT " )
124129 )
125- val doc3 = UpdateOneModel <SampleDoc >(
126- Filters .eq(" _id" , 3 ),
127- Updates .set(SampleDoc ::x .name, 2 )
130+ val updateMdl = UpdateOneModel <Person >(
131+ Filters .eq(" _id" , 6 ),
132+ Updates .set(Person ::name .name, " Zaynab Hassan " )
128133 )
129- val doc4 = DeleteManyModel <SampleDoc >(Filters .eq( SampleDoc ::x .name, 2 ))
134+ val deleteMdl = DeleteManyModel <Person >(Filters .gt( Person ::age .name, 50 ))
130135
131136 val bulkOperations = listOf (
132- doc1 ,
133- doc2 ,
134- doc3 ,
135- doc4
137+ insertMdl ,
138+ replaceMdl ,
139+ updateMdl ,
140+ deleteMdl
136141 )
137142
138- val update = collection.bulkWrite(bulkOperations)
143+ val result = collection.bulkWrite(bulkOperations)
139144 // :snippet-end:
140145 // Junit test for the above code
141- assertTrue(update.wasAcknowledged())
146+ assertTrue(result.wasAcknowledged())
147+ collection.drop()
142148 }
143149
144150 @Test
145151 fun unorderedExecutionTest () = runBlocking {
146- val doc1 = InsertOneModel (SampleDoc ( 3 ))
147- val doc2 = ReplaceOneModel (
152+ val insertMdl = InsertOneModel (Person ( 6 , " Zaynab Omar " , 37 ))
153+ val replaceMdl = ReplaceOneModel (
148154 Filters .eq(" _id" , 1 ),
149- SampleDoc (1 , 2 )
155+ Person (1 , " Sandy Kane " , location = " Helena, MT " )
150156 )
151- val doc3 = UpdateOneModel <SampleDoc >(
152- Filters .eq(" _id" , 3 ),
153- Updates .set(SampleDoc ::x .name, 2 )
154- )
155- val doc4 = DeleteManyModel <SampleDoc >(Filters .eq( SampleDoc ::x .name, 2 ))
157+ val updateMdl = UpdateOneModel <Person >(
158+ Filters .eq(" _id" , 6 ),
159+ Updates .set(Person ::name .name, " Zaynab Hassan " )
160+ )
161+ val deleteMdl = DeleteManyModel <Person >(Filters .gt( Person ::age .name, 50 ))
156162
157163 val bulkOperations = listOf (
158- doc1 ,
159- doc2 ,
160- doc3 ,
161- doc4
164+ insertMdl ,
165+ replaceMdl ,
166+ updateMdl ,
167+ deleteMdl
162168 )
163169 // :snippet-start: unordered
164170 val options = BulkWriteOptions ().ordered(false )
165- val unorderedUpdate = collection.bulkWrite(bulkOperations, options)
171+ val unorderedResult = collection.bulkWrite(bulkOperations, options)
166172 // :snippet-end:
167173 // Junit test for the above code
168- assertTrue(unorderedUpdate.wasAcknowledged())
174+ assertTrue(unorderedResult.wasAcknowledged())
175+ collection.drop()
169176 }
170177}
0 commit comments