@Test
  public void testBulkSQLUpdateWithMultipleCriteria() {
    Owner owner = this.createOwner();

    Content c1 = this.createContent("c1", "content 1", owner);
    Content c2 = this.createContent("c2", "content 2", owner);
    Content c3 = this.createContent("c3", "content 3", owner);

    Map<Object, Object> values = new HashMap<Object, Object>();
    values.put("content 1", "update 1");
    values.put("content 2", "update 2");
    values.put("content ?", "should not exist");

    Map<String, Object> criteria = new HashMap<String, Object>();
    criteria.put("name", values.keySet());
    criteria.put("content_id", "c2");

    int result = this.testContentCurator.bulkSQLUpdate(Content.DB_TABLE, "name", values, criteria);

    // Unlike the base test where the result count is 3, this filters by only the values we
    // intend to update, so it should be 1.
    assertEquals(1, result);

    testContentCurator.refresh(c1, c2, c3);

    assertEquals("content 1", c1.getName());
    assertEquals("update 2", c2.getName());
    assertEquals("content 3", c3.getName());
  }
  @Test
  public void testBulkSQLUpdate() throws Exception {
    Owner owner = this.createOwner();

    Content c1 = this.createContent("c1", "content 1", owner);
    Content c2 = this.createContent("c2", "content 2", owner);
    Content c3 = this.createContent("c3", "content 3", owner);

    Map<Object, Object> values = new HashMap<Object, Object>();
    values.put("content 1", "update 1");
    values.put("content 2", "update 2");
    values.put("content ?", "should not exist");

    int result = this.testContentCurator.bulkSQLUpdate(Content.DB_TABLE, "name", values, null);

    // Note:
    // This looks like it should be 2, and technically that's what's happening here, but with
    // the way the bulk updater works, even the non-matching columns are getting updated to
    // themselves.
    assertEquals(3, result);

    testContentCurator.refresh(c1, c2, c3);

    assertEquals("update 1", c1.getName());
    assertEquals("update 2", c2.getName());
    assertEquals("content 3", c3.getName());
  }
  @Test
  public void testBulkSQLUpdateWithEmptyValues() throws Exception {
    Owner owner = this.createOwner();

    Content c1 = this.createContent("c1", "content 1", owner);
    Content c2 = this.createContent("c2", "content 2", owner);
    Content c3 = this.createContent("c3", "content 3", owner);

    Map<Object, Object> values = new HashMap<Object, Object>();

    int result = this.testContentCurator.bulkSQLUpdate(Content.DB_TABLE, "name", values, null);

    assertEquals(0, result);

    testContentCurator.refresh(c1, c2, c3);

    assertEquals("content 1", c1.getName());
    assertEquals("content 2", c2.getName());
    assertEquals("content 3", c3.getName());
  }