package nl.elastique.poetry.data.test; import android.test.AndroidTestCase; import com.j256.ormlite.dao.Dao; import org.json.JSONArray; import org.json.JSONObject; import java.util.List; import nl.elastique.poetry.data.test.data.models.UserTag; import nl.elastique.poetry.json.JsonPathResolver; import nl.elastique.poetry.json.JsonPersister; import nl.elastique.poetry.data.test.data.DatabaseHelper; import nl.elastique.poetry.data.test.data.JsonLoader; import nl.elastique.poetry.data.test.data.models.Group; import nl.elastique.poetry.data.test.data.models.User; public class JsonTestCase extends AndroidTestCase { public void testJsonMapper() throws Exception { DatabaseHelper helper = DatabaseHelper.getHelper(getContext()); // Load JSON JSONObject json = JsonLoader.loadObject(getContext(), R.raw.test); // Get child arrays from JSON JSONArray users_json = JsonPathResolver.resolveArray(json, "users"); JSONArray groups_json = JsonPathResolver.resolveArray(json, "groups"); // Persist arrays to database JsonPersister persister = new JsonPersister(helper.getWritableDatabase()); persister.persistArray(User.class, users_json); persister.persistArray(Group.class, groups_json); Dao<User, Integer> user_dao = helper.getDao(User.class); Dao<Group, Integer> group_dao = helper.getDao(Group.class); List<User> users = user_dao.queryForAll(); assertEquals(2, users.size()); List<Group> groups = group_dao.queryForAll(); assertEquals(3, groups.size()); User user = user_dao.queryForId(1); assertNotNull(user); assertEquals("John", user.getName()); assertEquals(2, user.getTags().size()); assertEquals("tag2", user.getTags().get(1)); Group group = group_dao.queryForId(2); assertNotNull(group); assertEquals("Group B", group.getName()); DatabaseHelper.releaseHelper(); } }