예제 #1
0
 /** Check that updating the flds column works as expected */
 public void testUpdateNoteFields() {
   final ContentResolver cr = getContext().getContentResolver();
   ContentValues cv = new ContentValues();
   // Change the fields so that the first field is now "newTestValue"
   String[] dummyFields2 = mDummyFields.clone();
   dummyFields2[0] = TEST_FIELD_VALUE;
   for (Uri uri : mCreatedNotes) {
     // Update the flds
     cv.put(FlashCardsContract.Note.FLDS, Utils.joinFields(dummyFields2));
     cr.update(uri, cv, null, null);
     // Query the table again
     Cursor noteCursor =
         cr.query(uri, FlashCardsContract.Note.DEFAULT_PROJECTION, null, null, null);
     try {
       assertNotNull(
           "Check that there is a valid cursor for detail data after update", noteCursor);
       assertEquals(
           "Check that there is one and only one entry after update", 1, noteCursor.getCount());
       assertTrue("Move to first item in cursor", noteCursor.moveToFirst());
       String[] newFlds =
           Utils.splitFields(
               noteCursor.getString(noteCursor.getColumnIndex(FlashCardsContract.Note.FLDS)));
       assertTrue(
           "Check that the flds have been updated correctly",
           Arrays.equals(newFlds, dummyFields2));
     } finally {
       noteCursor.close();
     }
   }
 }
예제 #2
0
 /** Check that inserting a new model works as expected */
 public void testInsertAndUpdateModel() throws Exception {
   final ContentResolver cr = getContext().getContentResolver();
   ContentValues cv = new ContentValues();
   // Insert a new model
   cv.put(FlashCardsContract.Model.NAME, TEST_MODEL_NAME);
   cv.put(FlashCardsContract.Model.FIELD_NAMES, Utils.joinFields(TEST_MODEL_FIELDS));
   cv.put(FlashCardsContract.Model.NUM_CARDS, TEST_MODEL_CARDS.length);
   cv.put(FlashCardsContract.Model.CSS, TEST_MODEL_CSS);
   Uri modelUri = cr.insert(FlashCardsContract.Model.CONTENT_URI, cv);
   assertNotNull("Check inserted model isn't null", modelUri);
   long mid = Long.parseLong(modelUri.getLastPathSegment());
   final Collection col = CollectionHelper.getInstance().getCol(getContext());
   try {
     JSONObject model = col.getModels().get(mid);
     assertEquals("Check model name", TEST_MODEL_NAME, model.getString("name"));
     assertEquals("Check css", TEST_MODEL_CSS, model.getString("css"));
     assertEquals(
         "Check templates length", TEST_MODEL_CARDS.length, model.getJSONArray("tmpls").length());
     assertEquals(
         "Check field length", TEST_MODEL_FIELDS.length, model.getJSONArray("flds").length());
     JSONArray flds = model.getJSONArray("flds");
     for (int i = 0; i < flds.length(); i++) {
       assertEquals(
           "Check name of fields", flds.getJSONObject(i).getString("name"), TEST_MODEL_FIELDS[i]);
     }
     // Update each of the templates in the model
     for (int i = 0; i < TEST_MODEL_CARDS.length; i++) {
       cv = new ContentValues();
       cv.put(FlashCardsContract.CardTemplate.NAME, TEST_MODEL_CARDS[i]);
       cv.put(FlashCardsContract.CardTemplate.QUESTION_FORMAT, TEST_MODEL_QFMT[i]);
       cv.put(FlashCardsContract.CardTemplate.ANSWER_FORMAT, TEST_MODEL_AFMT[i]);
       cv.put(FlashCardsContract.CardTemplate.BROWSER_QUESTION_FORMAT, TEST_MODEL_QFMT[i]);
       cv.put(FlashCardsContract.CardTemplate.BROWSER_ANSWER_FORMAT, TEST_MODEL_AFMT[i]);
       Uri tmplUri =
           Uri.withAppendedPath(Uri.withAppendedPath(modelUri, "templates"), Integer.toString(i));
       assertTrue("Update rows", cr.update(tmplUri, cv, null, null) > 0);
       JSONObject template = col.getModels().get(mid).getJSONArray("tmpls").getJSONObject(i);
       assertEquals("Check template name", TEST_MODEL_CARDS[i], template.getString("name"));
       assertEquals("Check qfmt", TEST_MODEL_QFMT[i], template.getString("qfmt"));
       assertEquals("Check afmt", TEST_MODEL_AFMT[i], template.getString("afmt"));
       assertEquals("Check bqfmt", TEST_MODEL_QFMT[i], template.getString("bqfmt"));
       assertEquals("Check bafmt", TEST_MODEL_AFMT[i], template.getString("bafmt"));
     }
   } finally {
     // Delete the model (this will force a full-sync)
     try {
       col.modSchema(false);
       col.getModels().rem(col.getModels().get(mid));
     } catch (ConfirmModSchemaException e) {
       // This will never happen
       throw new IllegalStateException(
           "Unexpected ConfirmModSchemaException trying to remove model");
     }
   }
 }