Skip to content

Commit 568d658

Browse files
committed
JAVA-589 Expand @Enumerated Parameter test to test for STRING storage.
1 parent 2f09ff9 commit 568d658

1 file changed

Lines changed: 78 additions & 16 deletions

File tree

driver-mapping/src/test/java/com/datastax/driver/mapping/MapperAccessorParamsTest.java

Lines changed: 78 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.Collection;
1919

20+
import com.datastax.driver.core.ResultSet;
2021
import com.google.common.collect.Lists;
2122
import org.testng.annotations.Test;
2223

@@ -28,22 +29,41 @@
2829
public class MapperAccessorParamsTest extends CCMBridge.PerClassSingleNodeCluster {
2930
@Override
3031
protected Collection<String> getTableDefinitions() {
31-
return Lists.newArrayList("CREATE TABLE user ( key int primary key, gender int)",
32-
"CREATE INDEX on user(gender)");
33-
32+
return Lists.newArrayList(
33+
"CREATE TABLE user ( key int primary key, gender int)",
34+
"CREATE INDEX on user(gender)",
35+
"CREATE TABLE user_str ( key int primary key, gender text)",
36+
"CREATE INDEX on user_str(gender)");
3437
}
3538

3639
@Test(groups = "short")
37-
void should_include_enumtype_in_accessor() {
38-
Mapper<User> userMapper = new MappingManager(session).mapper(User.class);
39-
userMapper.save(new User(1, 0));
40-
userMapper.save(new User(2, 1));
41-
40+
void should_include_enumtype_in_accessor_ordinal() {
4241
UserAccessor accessor = new MappingManager(session)
43-
.createAccessor(UserAccessor.class);
44-
assertThat(accessor.getUser(Enum.MALE).one().getGender()).isEqualTo(0);
42+
.createAccessor(UserAccessor.class);
43+
44+
accessor.addUser(0, Enum.FEMALE);
45+
accessor.addUser(1, Enum.MALE);
46+
47+
assertThat(accessor.getUser(Enum.MALE).one().getGender()).isEqualTo(Enum.MALE);
4548
assertThat(accessor.getUser(Enum.MALE).one().getKey()).isEqualTo(1);
4649

50+
assertThat(accessor.getUser(Enum.FEMALE).one().getGender()).isEqualTo(Enum.FEMALE);
51+
assertThat(accessor.getUser(Enum.FEMALE).one().getKey()).isEqualTo(0);
52+
}
53+
54+
@Test(groups = "short")
55+
void should_include_enumtype_in_accessor_string() {
56+
UserAccessor accessor = new MappingManager(session)
57+
.createAccessor(UserAccessor.class);
58+
59+
accessor.addUserStr(0, Enum.FEMALE);
60+
accessor.addUserStr(1, Enum.MALE);
61+
62+
assertThat(accessor.getUserStr(Enum.MALE).one().getGender()).isEqualTo(Enum.MALE);
63+
assertThat(accessor.getUserStr(Enum.MALE).one().getKey()).isEqualTo(1);
64+
65+
assertThat(accessor.getUserStr(Enum.FEMALE).one().getGender()).isEqualTo(Enum.FEMALE);
66+
assertThat(accessor.getUserStr(Enum.FEMALE).one().getKey()).isEqualTo(0);
4767
}
4868

4969
enum Enum {
@@ -52,21 +72,63 @@ enum Enum {
5272

5373
@Accessor
5474
public interface UserAccessor {
55-
@Query("select * from user where gender=:val")
56-
Result<User> getUser(@Param("val") @Enumerated(EnumType.ORDINAL) Enum value);
75+
@Query("select * from user where gender=?")
76+
Result<User> getUser(@Enumerated(EnumType.ORDINAL) Enum value);
77+
78+
@Query("select * from user_str where gender=?")
79+
Result<UserStr> getUserStr(@Enumerated(EnumType.STRING) Enum value);
80+
81+
@Query("insert into user (key, gender) values (?,?)")
82+
ResultSet addUser(int key, @Enumerated(EnumType.ORDINAL) Enum value);
83+
84+
@Query("insert into user_str (key, gender) values (?,?)")
85+
ResultSet addUserStr(int key, @Enumerated(EnumType.STRING) Enum value);
5786
}
5887

5988
@Table(name = "user")
6089
public static class User {
6190
@PartitionKey
6291
private int key;
6392

64-
private int gender;
93+
@Enumerated(EnumType.ORDINAL)
94+
private Enum gender;
6595

6696
public User() {
6797
}
6898

69-
public User(int k, int val) {
99+
public User(int k, Enum val) {
100+
this.key = k;
101+
this.gender = val;
102+
}
103+
104+
public int getKey() {
105+
return this.key;
106+
}
107+
108+
public void setKey(int pk) {
109+
this.key = pk;
110+
}
111+
112+
public Enum getGender() {
113+
return this.gender;
114+
}
115+
116+
public void setGender(Enum val) {
117+
this.gender = val;
118+
}
119+
}
120+
121+
@Table(name = "user")
122+
public static class UserStr {
123+
@PartitionKey
124+
private int key;
125+
126+
private Enum gender;
127+
128+
public UserStr() {
129+
}
130+
131+
public UserStr(int k, Enum val) {
70132
this.key = k;
71133
this.gender = val;
72134
}
@@ -79,11 +141,11 @@ public void setKey(int pk) {
79141
this.key = pk;
80142
}
81143

82-
public int getGender() {
144+
public Enum getGender() {
83145
return this.gender;
84146
}
85147

86-
public void setGender(int val) {
148+
public void setGender(Enum val) {
87149
this.gender = val;
88150
}
89151
}

0 commit comments

Comments
 (0)