package me.arin.jacass;
import me.arin.jacass.serializer.testutil.EmbeddedServerHelper;
import me.arin.jacass.testModels.User;
import org.apache.thrift.transport.TTransportException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.IOException;
import java.util.Map;
import static org.junit.Assert.*;
/**
* User: Arin Sarkissian
* Date: Mar 24, 2010
* Time: 2:19:39 PM
*/
public class ModelTest {
private static EmbeddedServerHelper embedded;
/**
* Set embedded cassandra up and spawn it in a new thread.
*
* @throws org.apache.thrift.transport.TTransportException
*
* @throws java.io.IOException
* @throws InterruptedException
*/
@BeforeClass
public static void setup() throws TTransportException, IOException, InterruptedException {
embedded = new EmbeddedServerHelper(System.getProperty("user.dir"));
embedded.setup();
Executor.add("localhost", 9170);
}
@AfterClass
public static void teardown() throws IOException {
embedded.teardown();
}
@Test
public void testBasicSave() throws Exception {
String key = "random-key";
String username = "phatduckk";
String email = "phatduckk@example.com";
User user = new User(username, email);
user.setKey(key);
user.save();
User fetchedUser = (User) new User().load(key);
assertNotNull(fetchedUser);
assertTrue(fetchedUser instanceof User);
assertEquals(key, fetchedUser.getKey());
assertEquals(username, fetchedUser.getUsername());
assertEquals(email, fetchedUser.getEmail());
String changedEmail = "changedit@example.com";
fetchedUser.setEmail(changedEmail);
fetchedUser.save();
User userPostEmailChange = (User) new User().load(key);
assertEquals(changedEmail, userPostEmailChange.getEmail());
userPostEmailChange.remove();
User postRemove = (User) new User().load(key);
assertNull(postRemove);
}
@Test
public void testKeyStuff() {
User u = new User();
assertNull(u.getKey());
assertNotNull(u.getKey(true));
String bsKey = "balls";
User u2 = new User();
u2.setKey(bsKey);
assertEquals(bsKey, u2.getKey());
}
@Test
public void testMultiget() throws Exception {
User a = new User("username-a", "email-a");
a.setKey("a");
a.save();
User b = new User("username-b", "email-b");
b.setKey("b");
b.save();
Map<String, BaseModel> users = new User().load(new String[]{"a", "b", "c"});
assertNotNull(users.get("a"));
assertNotNull(users.get("b"));
assertNull(users.get("c"));
assertEquals("username-a", ((User) users.get("a")).getUsername());
assertEquals("username-b", ((User) users.get("b")).getUsername());
assertEquals("email-a", ((User) users.get("a")).getEmail());
assertEquals("email-b", ((User) users.get("b")).getEmail());
}
@Test
public void testColumnInfo() {
User user = new User("username", "email");
Map<String, ColumnInfo> columnInfo = user.getColumnInfos();
ColumnInfo emailColumn = columnInfo.get("email");
ColumnInfo usernameColumn = columnInfo.get("username");
assertTrue(! columnInfo.isEmpty());
assertNotNull(usernameColumn);
assertNotNull(emailColumn);
assertTrue(usernameColumn instanceof ColumnInfo);
assertEquals("username", usernameColumn.getName());
assertEquals(String.class, usernameColumn.getCls());
assertNull(usernameColumn.getIndexData());
assertFalse(usernameColumn.isIndexed());
assertNotNull(emailColumn.getIndexData());
assertTrue(emailColumn.getIndexData().isUnique());
assertFalse(emailColumn.getIndexData().isRequired());
}
}