diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorIntegrationTests.java
index 85b1c06e7..ad8085d71 100755
--- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorIntegrationTests.java
+++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorIntegrationTests.java
@@ -64,11 +64,11 @@ public class CreateTableCqlGeneratorIntegrationTests extends AbstractKeyspaceCre
.clusteredKeyColumn("age", DataType.smallint()) //
.column("name", DataType.ascii());
+ session.execute(CreateTableCqlGenerator.toCql(table));
+
TableMetadata person = cluster.getMetadata().getKeyspace(getKeyspace()).getTable("person");
assertThat(person.getPartitionKey()).hasSize(2);
assertThat(person.getClusteringColumns()).hasSize(2);
-
- session.execute(CreateTableCqlGenerator.toCql(table));
}
@Test // DATACASS-518
diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorUnitTests.java
index ec75a672b..22835a6d5 100755
--- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorUnitTests.java
+++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGeneratorUnitTests.java
@@ -17,21 +17,14 @@ package org.springframework.data.cassandra.core.cql.generator;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.cassandra.core.cql.CqlIdentifier.*;
+import static org.springframework.data.cassandra.core.cql.generator.CreateTableCqlGenerator.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.data.cassandra.core.cql.CqlIdentifier;
import org.springframework.data.cassandra.core.cql.Ordering;
-import org.springframework.data.cassandra.core.cql.ReservedKeyword;
import org.springframework.data.cassandra.core.cql.keyspace.CreateTableSpecification;
import org.springframework.data.cassandra.core.cql.keyspace.Option;
import org.springframework.data.cassandra.core.cql.keyspace.TableOption;
@@ -51,7 +44,126 @@ import com.datastax.driver.core.DataType;
*/
public class CreateTableCqlGeneratorUnitTests {
- private static final Logger log = LoggerFactory.getLogger(CreateTableCqlGeneratorUnitTests.class);
+ @Test
+ public void shouldGenerateCorrectCQL() {
+
+ CqlIdentifier name = of("mytable");
+ DataType partitionKeyType0 = DataType.text();
+ CqlIdentifier partitionKey0 = of("partitionKey0");
+ DataType columnType1 = DataType.text();
+ String column1 = "column1";
+
+ CreateTableSpecification table = CreateTableSpecification.createTable(name)
+ .partitionKeyColumn(partitionKey0, partitionKeyType0).column(column1, columnType1);
+
+ String cql = toCql(table);
+ assertPreamble(name, cql);
+ assertColumns(String.format("%s %s, %s %s", partitionKey0, partitionKeyType0, column1, columnType1), cql);
+ assertPrimaryKey(partitionKey0.toCql(), cql);
+ }
+
+ @Test
+ public void shouldGenerateCompositePrimaryKey() {
+
+ CqlIdentifier name = of("composite_partition_key_table");
+ DataType partKeyType0 = DataType.text();
+ CqlIdentifier partKey0 = of("partKey0");
+ DataType partKeyType1 = DataType.text();
+ CqlIdentifier partKey1 = of("partKey1");
+ CqlIdentifier column0 = of("column0");
+ DataType columnType0 = DataType.text();
+
+ CreateTableSpecification table = CreateTableSpecification.createTable(name)
+ .partitionKeyColumn(partKey0, partKeyType0).partitionKeyColumn(partKey1, partKeyType1)
+ .column(column0, columnType0);
+
+ String cql = toCql(table);
+
+ assertPreamble(name, cql);
+ assertColumns(
+ String.format("%s %s, %s %s, %s %s", partKey0, partKeyType0, partKey1, partKeyType1, column0, columnType0),
+ cql);
+ assertPrimaryKey(String.format("(%s, %s)", partKey0, partKey1), cql);
+ }
+
+ @Test
+ public void shouldGenerateTableOptions() {
+
+ CqlIdentifier name = of("mytable");
+ DataType partitionKeyType0 = DataType.text();
+ CqlIdentifier partitionKey0 = of("partitionKey0");
+ DataType partitionKeyType1 = DataType.timestamp();
+ CqlIdentifier partitionKey1 = of("create_timestamp");
+ DataType columnType1 = DataType.text();
+ CqlIdentifier column1 = of("column1");
+ Double readRepairChance = 0.5;
+
+ CreateTableSpecification table = CreateTableSpecification.createTable(name)
+ .partitionKeyColumn(partitionKey0, partitionKeyType0).partitionKeyColumn(partitionKey1, partitionKeyType1)
+ .column(column1, columnType1).with(TableOption.READ_REPAIR_CHANCE, readRepairChance);
+
+ String cql = toCql(table);
+
+ assertPreamble(name, cql);
+ assertColumns(String.format("%s %s, %s %s, %s %s", partitionKey0, partitionKeyType0, partitionKey1,
+ partitionKeyType1, column1, columnType1), cql);
+ assertPrimaryKey(String.format("(%s, %s)", partitionKey0, partitionKey1), cql);
+ assertDoubleOption(TableOption.READ_REPAIR_CHANCE.getName(), readRepairChance, cql);
+ }
+
+ @Test
+ public void shouldGenerateMultipleOptions() {
+
+ CqlIdentifier name = of("timeseries_table");
+ DataType partitionKeyType0 = DataType.timeuuid();
+ CqlIdentifier partitionKey0 = of("tid");
+ DataType partitionKeyType1 = DataType.timestamp();
+ CqlIdentifier partitionKey1 = of("create_timestamp");
+ DataType columnType1 = DataType.text();
+ CqlIdentifier column1 = of("data_point");
+ Double readRepairChance = 0.5;
+ Double dcLocalReadRepairChance = 0.7;
+ Double bloomFilterFpChance = 0.001;
+ Boolean replcateOnWrite = Boolean.FALSE;
+ Long gcGraceSeconds = 600l;
+ String comment = "This is My Table";
+ Map