TestNodePropertyAccessor( long nodeId, SchemaDescriptor schema, Value... values ) { nodePropertyMap = new HashMap<>(); addNode( nodeId, schema, values ); }
@Test public void shouldNotRestrictUpdatesDifferingOnSecondProperty() throws Exception { // given IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> { // when p.add( Arrays.asList( IndexEntryUpdate.add( nodeId1, descriptor.schema(), value1, value2 ), IndexEntryUpdate.add( nodeId2, descriptor.schema(), value1, value3 ) ) ); TestNodePropertyAccessor propertyAccessor = new TestNodePropertyAccessor( nodeId1, descriptor.schema(), value1, value2 ); propertyAccessor.addNode( nodeId2, descriptor.schema(), value1, value3 ); // then this should pass fine p.verifyDeferredConstraints( propertyAccessor ); } ); } }
@Test public void shouldEnforceUniqueConstraintsDirectly() throws Exception { // when IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> { try { p.add( Arrays.asList( IndexEntryUpdate.add( nodeId1, descriptor.schema(), value1, value2 ), IndexEntryUpdate.add( nodeId2, descriptor.schema(), value1, value2 ) ) ); TestNodePropertyAccessor propertyAccessor = new TestNodePropertyAccessor( nodeId1, descriptor.schema(), value1, value2 ); propertyAccessor.addNode( nodeId2, descriptor.schema(), value1, value2 ); p.verifyDeferredConstraints( propertyAccessor ); fail( "expected exception" ); } // then catch ( IndexEntryConflictException conflict ) { assertEquals( nodeId1, conflict.getExistingNodeId() ); assertEquals( ValueTuple.of( value1, value2 ), conflict.getPropertyValues() ); assertEquals( nodeId2, conflict.getAddedNodeId() ); } } ); }
add( nodeId2, descriptor.schema(), value ) ) ); TestNodePropertyAccessor propertyAccessor = new TestNodePropertyAccessor( nodeId1, descriptor.schema(), value ); propertyAccessor.addNode( nodeId2, descriptor.schema(), value ); p.verifyDeferredConstraints( propertyAccessor );