/*
* This software is released under the BSD license. For full license see License-library.txt file.
*
* Copyright (c) 2011, Peter Knego & Matjaz Tercelj
* All rights reserved.
*/
package com.leanengine.android.example.tests;
import android.util.Log;
import com.leanengine.LeanEntity;
import com.leanengine.LeanException;
import com.leanengine.LeanQuery;
import junit.framework.Assert;
import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.List;
public class QueryTest extends TestCase {
private List<Long> entitiyIDs = new ArrayList<Long>();
// fixed entity name must be used because of indexes
// this will clash if multiple clients run tests at the same time
private String entityName = "nn";
public QueryTest(String name) {
super(name);
}
@Override
protected void runTest() {
createQueryEntities();
queryEntities();
deleteQueryEntities();
}
public void createQueryEntities() {
long entitiyID;
for (int i = 1; i <= 10; i++) {
LeanEntity testEntity = LeanEntity.init(entityName);
testEntity.put("x", i);
try {
entitiyID = testEntity.save();
entitiyIDs.add(entitiyID); // save ID of the entity
Log.d("QueryTest", "Created entity: " + entityName + "[" + entitiyID + "]");
} catch (LeanException e) {
Log.e("QueryTest", "Error creating entity:" + e.getError().getErrorCode() + " msg:" + e.getError().getErrorMessage());
Assert.assertTrue(false);
return;
}
}
Assert.assertEquals(10, entitiyIDs.size());
}
public void queryEntities() {
LeanQuery query = new LeanQuery(entityName);
query.addFilter("x", LeanQuery.FilterOperator.GREATER_THAN_OR_EQUAL, 2);
query.addSort("x", LeanQuery.SortDirection.ASCENDING);
query.limit(2);
LeanEntity[] result = new LeanEntity[0];
try {
result = query.fetch();
} catch (LeanException e) {
Log.e("QueryTest", "Query error:" + e.getError().getErrorCode() + " msg:" + e.getError().getErrorMessage());
Assert.assertTrue(false);
return;
}
Assert.assertTrue(result != null && result.length == 2);
try {
result = query.fetchNext();
} catch (LeanException e) {
Log.e("QueryTest", "Query error:" + e.getError().getErrorCode() + " msg:" + e.getError().getErrorMessage());
Assert.assertTrue(false);
return;
}
Assert.assertTrue(result != null && result.length == 2);
}
public void deleteQueryEntities() {
for (Long entitiyID : entitiyIDs) {
try {
LeanEntity.delete(entityName, entitiyID);
Log.d("QueryTest", "Deleted entity: " + entityName + "[" + entitiyID + "]");
} catch (LeanException e) {
Log.e("QueryTest", "Error deleting entity:" + e.getError().getErrorCode() + " msg:" + e.getError().getErrorMessage());
Assert.assertTrue(false);
return;
}
}
Assert.assertTrue(true);
}
}