private void putProperty(EntityKey entityKey, Node node, TupleOperation operation) { try { node.setProperty(operation.getColumn(), operation.getValue()); } catch (ConstraintViolationException e) { String message = e.getMessage(); if (message.contains("already exists")) { throw log.mustNotInsertSameEntityTwice(String.valueOf(operation), e); } else { throw log.constraintViolation(entityKey, String.valueOf(operation), e); } } }
@Test public void shouldEnforceUniquenessConstraintOnSetProperty() throws Exception { // given constrainedNode("Label1", "key1", "value1"); newTransaction(); // when Node node = db.createNode(label("Label1")); try { node.setProperty("key1", "value1"); fail("should have thrown exception"); } // then catch (ConstraintViolationException e) { assertThat(e.getMessage(), containsString("\"key1\"=[value1]")); } }
@Test public void shouldPreventConflictingDataInSameTransaction() throws Exception { // given constrainedNode("Label1", "key1", "value1"); newTransaction(); // when db.createNode(label("Label1")).setProperty("key1", "value2"); try { db.createNode(label("Label1")).setProperty("key1", "value2"); fail("expected exception"); } // then catch (ConstraintViolationException e) { assertThat(e.getMessage(), containsString("\"key1\"=[value2]")); } }