/** @see DATADOC-246 */ @Test public void updatesDBRefsCorrectly() { DBRef first = new DBRef(factory.getDb(), "foo", new ObjectId()); DBRef second = new DBRef(factory.getDb(), "bar", new ObjectId()); template.updateFirst( null, Update.update("dbRefs", Arrays.asList(first, second)), ClassWithDBRefs.class); }
@Test public void bogusUpdateDoesNotTriggerException() throws Exception { MongoTemplate mongoTemplate = new MongoTemplate(factory); mongoTemplate.setWriteResultChecking(WriteResultChecking.EXCEPTION); Person person = new Person("Oliver2"); person.setAge(25); mongoTemplate.insert(person); Query q = new Query(Criteria.where("BOGUS").gt(22)); Update u = new Update().set("firstName", "Sven"); mongoTemplate.updateFirst(q, u, Person.class); }
@Test public void testWriteConcernResolver() { PersonWithIdPropertyOfTypeObjectId person = new PersonWithIdPropertyOfTypeObjectId(); person.setId(new ObjectId()); person.setFirstName("Dave"); template.setWriteConcern(WriteConcern.NONE); template.save(person); WriteResult result = template.updateFirst( query(where("id").is(person.getId())), update("firstName", "Carter"), PersonWithIdPropertyOfTypeObjectId.class); WriteConcern lastWriteConcern = result.getLastConcern(); assertThat(lastWriteConcern, equalTo(WriteConcern.NONE)); FsyncSafeWriteConcernResolver resolver = new FsyncSafeWriteConcernResolver(); template.setWriteConcernResolver(resolver); Query q = query(where("_id").is(person.getId())); Update u = update("firstName", "Carter"); result = template.updateFirst(q, u, PersonWithIdPropertyOfTypeObjectId.class); lastWriteConcern = result.getLastConcern(); assertThat(lastWriteConcern, equalTo(WriteConcern.FSYNC_SAFE)); MongoAction lastMongoAction = resolver.getMongoAction(); assertThat(lastMongoAction.getCollectionName(), is("personWithIdPropertyOfTypeObjectId")); assertThat(lastMongoAction.getDefaultWriteConcern(), equalTo(WriteConcern.NONE)); assertThat(lastMongoAction.getDocument(), notNullValue()); assertThat( lastMongoAction.getEntityClass().toString(), is(PersonWithIdPropertyOfTypeObjectId.class.toString())); assertThat(lastMongoAction.getMongoActionOperation(), is(MongoActionOperation.UPDATE)); assertThat(lastMongoAction.getQuery(), equalTo(q.getQueryObject())); assertThat(lastMongoAction.getDocument(), equalTo(u.getUpdateObject())); }
/** @see DATADOC-240, DATADOC-212 */ @Test public void updatesObjectIdsCorrectly() { PersonWithIdPropertyOfTypeObjectId person = new PersonWithIdPropertyOfTypeObjectId(); person.setId(new ObjectId()); person.setFirstName("Dave"); template.save(person); template.updateFirst( query(where("id").is(person.getId())), update("firstName", "Carter"), PersonWithIdPropertyOfTypeObjectId.class); PersonWithIdPropertyOfTypeObjectId result = template.findById(person.getId(), PersonWithIdPropertyOfTypeObjectId.class); assertThat(result, is(notNullValue())); assertThat(result.getId(), is(person.getId())); assertThat(result.getFirstName(), is("Carter")); }