package co.mwater.clientapp.test;
import org.json.JSONException;
import org.json.JSONObject;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import co.mwater.clientapp.dbsync.ChangeSet;
import co.mwater.clientapp.dbsync.ChangeSet.Table;
import co.mwater.clientapp.dbsync.ChangeSetJsonSerializer;
import co.mwater.clientapp.dbsync.CompleteDataSlice;
import co.mwater.clientapp.dbsync.DataSlice;
import co.mwater.clientapp.dbsync.SyncClientImpl;
import co.mwater.clientapp.dbsync.SyncTable;
public class ChangeSetJsonSerializerTests extends AndroidTestCase {
TestSyncDatabase testSyncDatabase = new TestSyncDatabase();
SQLiteDatabase db;
SyncClientImpl clientImpl;
DataSlice dataSlice = new CompleteDataSlice();
ChangeSetJsonSerializer serializer = new ChangeSetJsonSerializer();
@Override
public void setUp() throws Exception {
super.setUp();
db = testSyncDatabase.setUp(getContext());
clientImpl = new SyncClientImpl(db, new SyncTable[] { new TestSyncTable() });
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testSerializeChangeSet() throws JSONException {
String uid1 = "123";
String uid2 = "456";
testSyncDatabase.insert(uid1, 0);
testSyncDatabase.insert(uid2, 1);
testSyncDatabase.delete(uid2);
JSONObject jcs = serializer.serialize(clientImpl.getChangeSet());
assertEquals(
"{\"tables\":[{\"upserts\":{\"cols\":[\"uid\",\"a\",\"b\"],\"rows\":[[\"123\",\"apple\",\"banana\"]]},\"deletes\":{\"cols\":[\"uid\"],\"rows\":[[\"456\"]]},\"name\":\"dbtest\"}],\"until\":2}",
jcs.toString());
}
public void testDeserialize() throws JSONException {
String json = "{\"tables\":[{\"upserts\":{\"cols\":[\"uid\",\"a\",\"b\"],\"rows\":[[\"123\",\"apple\",\"banana\"]]},\"deletes\":{\"cols\":[\"uid\"],\"rows\":[[\"456\"]]},\"name\":\"dbtest\"}],\"until\":2}";
ChangeSet changeSet = serializer.deserialize(new JSONObject(json));
assertEquals(1, changeSet.getTables().length);
Table table = changeSet.getTables()[0];
assertEquals(TestSyncTable.TABLE_NAME, table.tableName);
assertEquals(1, table.upserts.getCount());
assertEquals(1, table.deletes.getCount());
assertEquals(3, table.upserts.getColumnCount());
assertEquals(1, table.deletes.getColumnCount());
}
}