15
15
*/
16
16
package org .springframework .data .cassandra .core ;
17
17
18
- import static org .assertj .core .api .Assertions .*;
19
- import static org .mockito .ArgumentMatchers .*;
20
- import static org .mockito .Mockito .*;
21
- import static org .springframework .data .cassandra .core .query .Criteria .*;
22
-
23
18
import java .util .Collections ;
24
19
import java .util .List ;
25
20
21
+ import com .datastax .oss .driver .api .core .CqlIdentifier ;
22
+ import com .datastax .oss .driver .api .core .CqlSession ;
23
+ import com .datastax .oss .driver .api .core .NoNodeAvailableException ;
24
+ import com .datastax .oss .driver .api .core .context .DriverContext ;
25
+ import com .datastax .oss .driver .api .core .cql .ColumnDefinition ;
26
+ import com .datastax .oss .driver .api .core .cql .ColumnDefinitions ;
27
+ import com .datastax .oss .driver .api .core .cql .ResultSet ;
28
+ import com .datastax .oss .driver .api .core .cql .Row ;
29
+ import com .datastax .oss .driver .api .core .cql .SimpleStatement ;
30
+ import com .datastax .oss .driver .api .core .cql .Statement ;
31
+ import com .datastax .oss .driver .api .core .type .DataTypes ;
32
+ import com .datastax .oss .driver .api .core .type .codec .registry .CodecRegistry ;
33
+ import com .datastax .oss .driver .internal .core .type .codec .registry .DefaultCodecRegistry ;
26
34
import org .junit .jupiter .api .BeforeEach ;
27
35
import org .junit .jupiter .api .Test ;
28
36
import org .junit .jupiter .api .extension .ExtendWith ;
43
51
import org .springframework .data .cassandra .domain .VersionedUser ;
44
52
import org .springframework .data .mapping .callback .EntityCallbacks ;
45
53
46
- import com .datastax .oss .driver .api .core .CqlIdentifier ;
47
- import com .datastax .oss .driver .api .core .CqlSession ;
48
- import com .datastax .oss .driver .api .core .NoNodeAvailableException ;
49
- import com .datastax .oss .driver .api .core .context .DriverContext ;
50
- import com .datastax .oss .driver .api .core .cql .ColumnDefinition ;
51
- import com .datastax .oss .driver .api .core .cql .ColumnDefinitions ;
52
- import com .datastax .oss .driver .api .core .cql .ResultSet ;
53
- import com .datastax .oss .driver .api .core .cql .Row ;
54
- import com .datastax .oss .driver .api .core .cql .SimpleStatement ;
55
- import com .datastax .oss .driver .api .core .cql .Statement ;
56
- import com .datastax .oss .driver .api .core .type .DataTypes ;
57
- import com .datastax .oss .driver .api .core .type .codec .registry .CodecRegistry ;
58
- import com .datastax .oss .driver .internal .core .type .codec .registry .DefaultCodecRegistry ;
54
+ import static org .assertj .core .api .Assertions .*;
55
+ import static org .mockito .ArgumentMatchers .*;
56
+ import static org .mockito .Mockito .*;
57
+ import static org .springframework .data .cassandra .core .query .Criteria .*;
59
58
60
59
/**
61
60
* Unit tests for {@link CassandraTemplate}.
@@ -307,7 +306,27 @@ void insertShouldInsertEntity() {
307
306
assertThat (beforeSave ).isSameAs (user );
308
307
}
309
308
310
- @ Test // DATACASS-618
309
+ @ Test
310
+ // GH-1295
311
+ void insertShouldConsiderEntityAfterCallback () {
312
+
313
+ when (resultSet .wasApplied ()).thenReturn (true );
314
+
315
+ User user = new User ("heisenberg" , "Walter" , "White" );
316
+
317
+ EntityCallbacks callbacks = EntityCallbacks .create ();
318
+ callbacks .addEntityCallback ((BeforeConvertCallback <Object >) (entity , tableName ) -> new User ("ww" , "Walter" , "White" ));
319
+ template .setEntityCallbacks (callbacks );
320
+
321
+ template .insert (user );
322
+
323
+ verify (session ).execute (statementCaptor .capture ());
324
+ assertThat (render (statementCaptor .getValue ()))
325
+ .isEqualTo ("INSERT INTO users (firstname,id,lastname) VALUES ('Walter','ww','White')" );
326
+ }
327
+
328
+ @ Test
329
+ // DATACASS-618
311
330
void insertShouldInsertVersionedEntity () {
312
331
313
332
when (resultSet .wasApplied ()).thenReturn (true );
@@ -323,7 +342,27 @@ void insertShouldInsertVersionedEntity() {
323
342
assertThat (beforeSave ).isSameAs (user );
324
343
}
325
344
326
- @ Test // DATACASS-250
345
+ @ Test
346
+ // GH-1295
347
+ void insertShouldInsertVersionedEntityAfterCallback () {
348
+
349
+ when (resultSet .wasApplied ()).thenReturn (true );
350
+
351
+ VersionedUser user = new VersionedUser ("heisenberg" , "Walter" , "White" );
352
+
353
+ EntityCallbacks callbacks = EntityCallbacks .create ();
354
+ callbacks .addEntityCallback ((BeforeConvertCallback <Object >) (entity , tableName ) -> new VersionedUser ("ww" , "Walter" , "White" ));
355
+ template .setEntityCallbacks (callbacks );
356
+
357
+ template .insert (user );
358
+
359
+ verify (session ).execute (statementCaptor .capture ());
360
+ assertThat (render (statementCaptor .getValue ())).isEqualTo (
361
+ "INSERT INTO vusers (firstname,id,lastname,version) VALUES ('Walter','ww','White',0) IF NOT EXISTS" );
362
+ }
363
+
364
+ @ Test
365
+ // DATACASS-250
327
366
void insertShouldInsertWithOptionsEntity () {
328
367
329
368
InsertOptions insertOptions = InsertOptions .builder ().withIfNotExists ().build ();
0 commit comments