/** * Effectively: * * <pre><code> * CREATE CONSTRAINT ON (n:Cybermen) assert n.name is unique * ; * </code></pre> */ private void createUniqueConstraint() { createUniqueConstraint( null ); }
@Test public void populatingConstraintMustAcceptDatasetOfUniqueEntries() { // Given givenUniqueDataset(); // Then this does not throw: createUniqueConstraint(); }
@Test( expected = ConstraintViolationException.class ) public void populatingConstraintMustRejectDatasetWithDuplicateEntries() { // Given givenUniqueDataset(); transaction( setProperty( c, "b" ), // same property value as 'b' has success ); // Then this must throw: createUniqueConstraint(); }
@Test public void populatingConstraintMustAcceptDatasetWithDalseIndexCollisions() { // Given givenUniqueDataset(); transaction( setProperty( b, COLLISION_X ), setProperty( c, COLLISION_Y ), success ); // Then this does not throw: createUniqueConstraint(); }
() -> createUniqueConstraint( createConstraintTransactionStarted ) ); createConstraintTransactionStarted.await();
/** * Effectively: * * <pre><code> * CREATE CONSTRAINT ON (n:Cybermen) assert n.name is unique * ; * * CREATE (a:Cybermen {name: "a"}), * (b:Cybermen), * (c: {name: "a"}), * (d: {name: "d"}) * ; * </code></pre> */ private void givenOnlineConstraint() { createUniqueConstraint(); try ( Transaction tx = db.beginTx() ) { a = db.createNode( label ); a.setProperty( property, "a" ); b = db.createNode( label ); c = db.createNode(); c.setProperty( property, "a" ); d = db.createNode(); d.setProperty( property, "d" ); tx.success(); } }