package com.arondor.common.reflection.gwt.client.presenter; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mockito; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.arondor.common.reflection.api.parser.AccessibleClassProvider; import com.arondor.common.reflection.bean.config.ObjectConfigurationFactoryBean; import com.arondor.common.reflection.catalog.SimpleAccessibleClassCatalog; import com.arondor.common.reflection.gwt.client.api.ObjectConfigurationMapPresenter; import com.arondor.common.reflection.gwt.client.presenter.ClassTreeNodePresenter.ClassDisplay; import com.arondor.common.reflection.gwt.client.presenter.ImplementingClassPresenter.Display; import com.arondor.common.reflection.gwt.client.presenter.SimpleObjectConfigurationMapPresenter.ObjectConfigurationMapDisplay; import com.arondor.common.reflection.gwt.client.presenter.fields.ListTreeNodePresenter.ListRootDisplay; import com.arondor.common.reflection.gwt.client.presenter.fields.MapTreeNodePresenter.MapNodeDisplay; import com.arondor.common.reflection.gwt.client.presenter.fields.MapTreeNodePresenter.MapRootDisplay; import com.arondor.common.reflection.gwt.client.presenter.fields.PrimitiveTreeNodePresenter.PrimitiveDisplay; import com.arondor.common.reflection.gwt.client.presenter.fields.StringListTreeNodePresenter.StringListDisplay; import com.arondor.common.reflection.gwt.client.service.GWTReflectionServiceAsync; import com.arondor.common.reflection.model.config.ElementConfiguration; import com.arondor.common.reflection.model.config.MapConfiguration; import com.arondor.common.reflection.model.config.ObjectConfiguration; import com.arondor.common.reflection.model.config.ObjectConfigurationFactory; import com.arondor.common.reflection.model.config.ObjectConfigurationMap; import com.arondor.common.reflection.model.config.ReferenceConfiguration; import com.arondor.common.reflection.parser.java.JavaAccessibleClassParser; import com.arondor.common.reflection.parser.spring.XMLBeanDefinitionParser; import com.arondor.common.reflection.service.DefaultReflectionService; import com.google.gwt.event.dom.client.HasClickHandlers; public class TestObjectConfigurationMapPresenter { private final ObjectConfigurationFactory objectConfigurationFactory = new ObjectConfigurationFactoryBean(); @Test @Ignore public void testSetObjectConfigurationMap() { String fieldName = "Toto"; DefaultReflectionService reflectionService = new DefaultReflectionService(); reflectionService.setAccessibleClassCatalog(new SimpleAccessibleClassCatalog()); reflectionService.setAccessibleClassParser(new JavaAccessibleClassParser()); BeanFactory beanFactory = new ClassPathXmlApplicationContext("testreflection-config.xml"); AccessibleClassProvider accessibleClassProvider = beanFactory.getBean("accessibleClassProvider", AccessibleClassProvider.class); accessibleClassProvider.provideClasses(reflectionService.getAccessibleClassCatalog()); GWTReflectionServiceAsync gwtReflectionService = new MockGWTReflectionServiceAsync(reflectionService); ObjectConfigurationMapDisplay objectConfigurationMapDisplay = Mockito.mock(ObjectConfigurationMapDisplay.class); HasClickHandlers hasClickHandlers = Mockito.mock(HasClickHandlers.class); Mockito.when(objectConfigurationMapDisplay.addElementClickHandler()).thenReturn(hasClickHandlers); MapNodeDisplay mapNodeDisplay = Mockito.mock(MapNodeDisplay.class); Mockito.when(objectConfigurationMapDisplay.createChildNode()).thenReturn(mapNodeDisplay); PrimitiveDisplay primitiveDisplay = Mockito.mock(PrimitiveDisplay.class); Mockito.when(mapNodeDisplay.createPrimitiveChild(Matchers.anyString())).thenReturn(primitiveDisplay); ClassDisplay classDisplay = Mockito.mock(ClassDisplay.class); Mockito.when(mapNodeDisplay.createClassChild()).thenReturn(classDisplay); Mockito.when(classDisplay.createClassChild()).thenReturn(classDisplay); ListRootDisplay listDisplay = Mockito.mock(ListRootDisplay.class); Mockito.when(classDisplay.createListChild()).thenReturn(listDisplay); Mockito.when(listDisplay.addElementClickHandler()).thenReturn(hasClickHandlers); Mockito.when(listDisplay.createClassChild()).thenReturn(classDisplay); Mockito.when(listDisplay.createPrimitiveChild(Matchers.anyString())).thenReturn(primitiveDisplay); StringListDisplay stringListDisplay = Mockito.mock(StringListDisplay.class); Mockito.when(listDisplay.createStringListChild()).thenReturn(stringListDisplay); MapRootDisplay mapRootDisplay = objectConfigurationMapDisplay; Mockito.when(listDisplay.createMapChild()).thenReturn(mapRootDisplay); Mockito.when(classDisplay.createMapChild()).thenReturn(mapRootDisplay); Mockito.when(mapNodeDisplay.createMapChild()).thenReturn(mapRootDisplay); Mockito.when(mapRootDisplay.addElementClickHandler()).thenReturn(hasClickHandlers); Mockito.when(classDisplay.createStringListChild()).thenReturn(stringListDisplay); Mockito.when(mapNodeDisplay.createStringListChild()).thenReturn(stringListDisplay); Mockito.when(classDisplay.createPrimitiveChild(Matchers.anyString())).thenReturn(primitiveDisplay); Display display = Mockito.mock(Display.class); Mockito.when(classDisplay.getImplementingClassDisplay()).thenReturn(display); ObjectConfigurationMapPresenter objectConfigurationMapPresenter = new SimpleObjectConfigurationMapPresenter( gwtReflectionService, fieldName, objectConfigurationMapDisplay); final String context = "file:///home/caroline/ARender-Rendition-2.2.2-rc0/conf/arender-rendition.xml"; XMLBeanDefinitionParser parser = new XMLBeanDefinitionParser(context); ObjectConfigurationMap objectConfigurationMap = parser.parse(); ObjectConfiguration localDS = objectConfigurationMap.get("localDocumentService"); ElementConfiguration factories = localDS.getFields().get("factories"); Assert.assertNotNull(factories); MapConfiguration factoriesMap = (MapConfiguration) factories; ElementConfiguration factoryPdf = factoriesMap.getMapConfiguration().get( objectConfigurationFactory.createPrimitiveConfiguration("application/pdf")); Assert.assertTrue(factoryPdf instanceof ReferenceConfiguration); objectConfigurationMapPresenter.setObjectConfigurationMap(objectConfigurationMap); ObjectConfigurationMap result = objectConfigurationMapPresenter .getObjectConfigurationMap(objectConfigurationFactory); Assert.assertNotNull(result); Assert.assertTrue(result.containsKey("localDocumentService")); Assert.assertEquals(objectConfigurationMap.size(), result.size()); } }