/**
  * Try to delete an app data value with a key that doesn't exist.
  *
  * @throws Exception when an error is encountered.
  */
 @Test
 public void testRemoveDataKeyThatDoesntExist() throws Exception {
   AppData appDataTestInstance = jpaAppDataMapper.findById(testAppDataId);
   jpaAppDataMapper.deleteAppDataValueByKey(appDataTestInstance.getId(), "nonexistent");
   jpaAppDataMapper.flush();
   getEntityManager().clear();
   AppData appDataTestInstanceRemoved = jpaAppDataMapper.findById(testAppDataId);
   assertFalse(
       "Data was not removed", appDataTestInstanceRemoved.getValues().containsKey("nonexistent"));
 }
 /**
  * Try to delete an app data value with a key that is attempting to use SQL Injection since keys
  * can be entered by users.
  *
  * @throws Exception when an error is encountered.
  */
 @Test
 public void testRemoveDataKeyThatIsBad() throws Exception {
   AppData appDataTestInstance = jpaAppDataMapper.findById(testAppDataId);
   jpaAppDataMapper.deleteAppDataValueByKey(appDataTestInstance.getId(), "viewcount' OR 1=1");
   jpaAppDataMapper.flush();
   getEntityManager().clear();
   AppData appDataTestInstanceRemoved = jpaAppDataMapper.findById(testAppDataId);
   assertTrue(
       "Data was removed with a bad key",
       appDataTestInstanceRemoved.getValues().containsKey("viewcount"));
 }
 /** Test the ability to update the value of an app data item. */
 @Test
 public void testUpdateDataItem() {
   AppData appDataTestInstance = jpaAppDataMapper.findById(testAppDataId);
   Map<String, String> appDataValues =
       new HashMap<String, String>(appDataTestInstance.getValues());
   appDataValues.put("viewcount", "4");
   appDataTestInstance.setValues(appDataValues);
   jpaAppDataMapper.flush();
   getEntityManager().clear();
   AppData appDataTestInstanceUpdated = jpaAppDataMapper.findById(testAppDataId);
   assertTrue(
       "Data was not removed", appDataTestInstanceUpdated.getValues().containsKey("viewcount"));
   assertEquals(
       "Data was not updated", "4", appDataTestInstanceUpdated.getValues().get("viewcount"));
 }
 /** Test if data retrieved by Gadget and Person Id's is correct. */
 @Test
 public void testFindByAppAndPersonId() {
   AppData testAppData =
       jpaAppDataMapper.findOrCreateByPersonAndGadgetDefinitionIds(
           testGadgetDefinitionId, testOpenSocialPersonId);
   assertEquals(
       "Person is not correct for retrieved AppData",
       testOpenSocialPersonId,
       testAppData.getPerson().getOpenSocialId());
   assertEquals(
       "GadgetDefinition is not correct for retrieved AppData",
       testGadgetDefinitionUrl,
       testAppData.getGadgetDefinition().getUrl());
 }
 /** Simple test for dataset setup. */
 @Test
 public void testDatasetSetup() {
   AppData testAppData = jpaAppDataMapper.findById(new Long(testAppDataId));
   assertEquals(
       "Person is not correct for retrieved AppData",
       testPersonId,
       testAppData.getPerson().getId());
   assertEquals(
       "Viewcount is incorrect for retrieved AppData",
       "2",
       testAppData.getValues().get("viewcount"));
   assertEquals(
       "Answer to question1answer is incorrect for retrieved AppData",
       "true",
       testAppData.getValues().get("question1answer"));
 }
 /** Testing insert capabilities. */
 @Test
 public void testInsert() {
   AppData appDataTestInstance = getNewAppDataObject();
   jpaAppDataMapper.insert(appDataTestInstance);
   assertTrue("Insert didn't work correctly, id is bad", appDataTestInstance.getId() > 0);
 }