@Test
public void testFindMetadata() {
Set<String> types = new HashSet<>();
types.add(Bean1.class.getName());
types.add(Bean2.class.getName());
types.add("non.existing.class.Bean");
TypeMetadataQuery query = new TypeMetadataQuery(path, types);
TypeMetadataQueryResult result = service.findMetadata(query);
assertTrue(result.getMissingTypes().contains("non.existing.class.Bean"));
TypeMetadata bean1Metadata = result.getTypeMetadatas().stream().filter(typeMetadata -> typeMetadata.getType().equals(Bean1.class.getName())).findFirst().orElse(null);
TypeMetadata bean2Metadata = result.getTypeMetadatas().stream().filter(typeMetadata -> typeMetadata.getType().equals(Bean2.class.getName())).findFirst().orElse(null);
assertNotNull(bean1Metadata);
assertNotNull(bean2Metadata);
assertHasField(bean1Metadata, "fieldBean1_1", String.class.getName(), "getFieldBean1_1", "setFieldBean1_1");
assertHasField(bean1Metadata, "fieldBean1_2", "int", "getFieldBean1_2", null);
assertHasField(bean1Metadata, "fieldBean1_3", "boolean", "isFieldBean1_3", "setFieldBean1_3");
assertHasField(bean1Metadata, "fieldBean1_4", Integer.class.getName(), null, "setFieldBean1_4");
assertHasField(bean2Metadata, "fieldBean1_1", String.class.getName(), "getFieldBean1_1", "setFieldBean1_1");
assertHasField(bean2Metadata, "fieldBean1_2", "int", "getFieldBean1_2", null);
assertHasField(bean2Metadata, "fieldBean1_3", "boolean", "isFieldBean1_3", "setFieldBean1_3");
assertHasField(bean2Metadata, "fieldBean1_4", Integer.class.getName(), null, "setFieldBean1_4");
assertHasField(bean2Metadata, "fieldBean2_1", String.class.getName(), "getFieldBean2_1", "setFieldBean2_1");
assertHasField(bean2Metadata, "fieldBean2_2", Object.class.getName(), "getFieldBean2_2", "setFieldBean2_2");
}