@Test
public void testHasMetadataType() throws Exception {

    final Metadata metadata = newMetadata(_inc);
    metadata.getDataInfo().setType(MetadataType.METADATA);
    Metadata md1 = _repository.save(metadata);
    final Metadata metadata2 = newMetadata(_inc);
    metadata2.getDataInfo().setType(MetadataType.SUB_TEMPLATE);
    Metadata md2 = _repository.save(metadata2);
    final Metadata metadata3 = newMetadata(_inc);
    metadata3.getDataInfo().setType(MetadataType.TEMPLATE);
    Metadata md3 = _repository.save(metadata3);
    assertEquals(1, _repository.findAll((Specification<Metadata>)hasType(MetadataType.METADATA)).size());
    assertEquals(1, _repository.findAll((Specification<Metadata>)hasType(MetadataType.SUB_TEMPLATE)).size());
    assertEquals(1, _repository.findAll((Specification<Metadata>)hasType(MetadataType.TEMPLATE)).size());
    assertEquals(md1.getId(), _repository.findOne((Specification<Metadata>)hasType(MetadataType.METADATA)).getId());
    assertEquals(md2.getId(), _repository.findOne((Specification<Metadata>)hasType(MetadataType.SUB_TEMPLATE)).getId());
    assertEquals(md3.getId(), _repository.findOne((Specification<Metadata>)hasType(MetadataType.TEMPLATE)).getId());
}