/** * */ package org.minnal.instrument.resource; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.io.Serializable; import java.util.Set; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.ws.rs.GET; import javax.ws.rs.Path; import org.activejpa.entity.Model; import org.minnal.instrument.NamingStrategy; import org.minnal.instrument.UnderscoreNamingStrategy; import org.minnal.instrument.entity.EntityNode.EntityNodePath; import org.minnal.instrument.resource.metadata.ResourceMetaData; import org.minnal.instrument.resource.metadata.ResourceMetaDataProvider; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author ganeshs * */ public class ResourceEnhancerTest { private ResourceWrapper wrapper; private ResourceMetaData resource; private Class<?> entityClass; private NamingStrategy namingStrategy = new UnderscoreNamingStrategy(); @BeforeMethod public void setup() { wrapper = mock(ResourceWrapper.class); resource = ResourceMetaDataProvider.instance().getResourceMetaData(DummyResource.class); entityClass = Parent.class; } @Test public void shouldEnhanceResource() { ResourceEnhancer enhancer = spy(new ResourceEnhancer(resource, entityClass, namingStrategy)); doReturn(wrapper).when(enhancer).createResourceWrapper(); enhancer.enhance(); verify(wrapper, times(2)).addPath(any(EntityNodePath.class)); verify(wrapper).wrap(); } @Entity class Parent extends Model { @OneToMany private Set<Parent> children; @Override public Serializable getId() { return null; } } @Path("/") class DummyResource { @GET public void dummyGet() {} } }