package com.thinkbiganalytics.metadata.modeshape.generic; /*- * #%L * thinkbig-metadata-modeshape * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.thinkbiganalytics.metadata.api.MetadataAccess; import com.thinkbiganalytics.metadata.api.generic.GenericEntity; import com.thinkbiganalytics.metadata.api.generic.GenericEntityProvider; import com.thinkbiganalytics.metadata.api.generic.GenericType; import com.thinkbiganalytics.metadata.api.generic.GenericType.PropertyType; import com.thinkbiganalytics.metadata.modeshape.ModeShapeEngineConfig; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.testng.annotations.Test; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import static org.assertj.core.api.Assertions.assertThat; @SpringApplicationConfiguration(classes = {ModeShapeEngineConfig.class}) public class JcrGenericEntityProviderTest extends AbstractTestNGSpringContextTests { @Inject private GenericEntityProvider provider; @Inject private MetadataAccess metadata; @Test(enabled = false) public void testCreateType() { String typeName = metadata.commit(() -> { Map<String, GenericType.PropertyType> fields = new HashMap<>(); fields.put("name", PropertyType.STRING); fields.put("description", PropertyType.STRING); fields.put("age", PropertyType.LONG); GenericType type = provider.createType("Person", fields); return type.getName(); }); assertThat(typeName).isNotNull().isEqualTo("Person"); } @Test(enabled = false, dependsOnMethods = "testCreateType") public void getPersonType() { boolean found = metadata.commit(() -> { GenericType type = provider.getType("Person"); return type != null; }); assertThat(found).isTrue(); } @Test(enabled = false, dependsOnMethods = "testCreateType") public void getAllType() { int size = metadata.commit(() -> { List<GenericType> types = provider.getTypes(); return types.size(); }); assertThat(size).isEqualTo(1); } @Test(enabled = false, dependsOnMethods = "testCreateType") public void testCreateEntity() { GenericEntity.ID id = metadata.commit(() -> { GenericType type = provider.getType("Person"); Map<String, Object> props = new HashMap<>(); props.put("name", "Bob"); props.put("description", "Silly"); props.put("age", 50); GenericEntity entity = provider.createEntity(type, props); return entity.getId(); }); assertThat(id).isNotNull(); } @Test(enabled = false, dependsOnMethods = "testCreateEntity") public void testGetEntity() { String typeName = metadata.commit(() -> { List<GenericEntity> list = provider.getEntities(); assertThat(list).isNotNull().hasSize(1); GenericEntity.ID id = list.get(0).getId(); GenericEntity entity = provider.getEntity(id); assertThat(entity).isNotNull(); assertThat(entity.getProperty("name")).isEqualTo("Bob"); return entity.getTypeName(); }); assertThat(typeName).isEqualTo("Person"); } }