/
CrudWithCassandraDriverIntegrationTest.java
160 lines (136 loc) · 5.58 KB
/
CrudWithCassandraDriverIntegrationTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package com.datastax.samples.astra;
import java.io.File;
import java.util.UUID;
import javax.annotation.PreDestroy;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
import com.datastax.oss.driver.api.core.cql.SimpleStatementBuilder;
import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
import com.datastax.sample.model.Task;
import com.datastax.sample.model.TodoAppSchema;
import com.datastax.sample.repository.TodoListRepository;
import com.datastax.sample.repository.TodoListRepositoryCassandraDriverImpl;
/**
* Junit5 + Spring.
* @author Cedrick LUNVEN (@clunven)
*/
@RunWith(JUnitPlatform.class)
@SpringJUnitConfig
public class CrudWithCassandraDriverIntegrationTest implements TodoAppSchema {
/** Logger for the class. */
private static Logger LOGGER =
LoggerFactory.getLogger(CrudWithCassandraDriverIntegrationTest.class);
@TestConfiguration
static class CrudWithCassandraDriverConfiguration {
@Bean
public CqlSession cqlSession() {
String configFile = CrudWithCassandraDriverIntegrationTest.class.getResource("/application_test.conf").getFile();
DriverConfigLoader configLoader = DriverConfigLoader.fromFile(new File(configFile));
return CqlSession.builder().withConfigLoader(configLoader).build();
}
@Bean
public TodoListRepository initRepo(CqlSession cqlSession) {
TodoListRepositoryCassandraDriverImpl repo = new TodoListRepositoryCassandraDriverImpl(cqlSession);
repo.initStatements();
return repo;
}
}
@Autowired
private CqlSession cqlSession;
@Autowired
private TodoListRepository todoRepo;
/**
* FIX THE TEST
*/
@Test
public void test_Insert() {
/*
* ==========================================
* Table Schema:
* ==========================================
* CREATE TABLE todoapp.todo_tasks (
* uid uuid,
* completed boolean,
* offset int,
* title text,
* PRIMARY KEY (uid)
* );
*
* ==========================================
* Sample INSERT:
* ==========================================
* INSERT into todo_tasks(uid, title, offset, completed)
* VALUES (uuid(), 'One', 1, true);
*/
// Using CqlSession and SimpleStatement insert this is table todo_tasks
UUID sampleUID = UUID.randomUUID();
System.out.println(sampleUID);
String sampleTitle = "A TASK";
int sampleOrder = 1;
boolean sampleComplete = true;
// Create here your statement and execute it
//QueryBuilder.insertInto("todo_tasks").value(COL, value)
SimpleStatement stmt = SimpleStatement.builder(""
+ "INSERT INTO todo_tasks (uid, title, offset, completed) "
+ "VALUES (?,?,?,?)")
.addPositionalValue(sampleUID)
.addPositionalValue(sampleTitle)
.addPositionalValue(sampleOrder)
.addPositionalValue(sampleComplete).
build();
cqlSession.execute(stmt);
//SimpleStatement stmtInsertTask = SimpleStatement.builder(.sampleTitle...
Assertions.assertFalse(todoRepo.findById(sampleUID).isEmpty());
}
@Test
public void should_create_task_with_new_uid() {
LOGGER.info("Starting CRUD Test");
// Given an empty table
UUID newUid = UUID.randomUUID();
todoRepo.deleteAll();
Assertions.assertEquals(0, todoRepo.findAll().size());
LOGGER.info("+ Table has been empty");
// When adding a new Task
todoRepo.upsert(new Task(newUid, "CrudWithCassandraDriverIntegrationTest", false, 1));
// Then you should have a table of size 1
Assertions.assertEquals(1, todoRepo.findAll().size());
LOGGER.info("+ a New Task {} has been created", newUid);
// Then you can find this task
Assertions.assertFalse(todoRepo.findById(newUid).isEmpty());
LOGGER.info("+ And I can retrieve it", newUid);
// And WHEN you delete it
todoRepo.delete(newUid);
// Then this is empty again
Assertions.assertEquals(0, todoRepo.findAll().size());
LOGGER.info("+ And now this is removed", newUid);
}
@PreDestroy
public void closeSession() {
if (null != cqlSession) {
cqlSession.close();
}
}
// SOLUTION of 5.c
/*
SimpleStatement stmtInsertTask = SimpleStatement.builder(""
+ "INSERT INTO todo_tasks(uid, title, offset, completed)"
+ "VALUES (?, ?, ?, ?)")
.addPositionalValue(sampleUID)
.addPositionalValue(sampleTitle)
.addPositionalValue(sampleOrder)
.addPositionalValue(sampleComplete)
.build();
cqlSession.execute(stmtInsertTask);
*/
}