package br.com.caelum.vraptor.proxy;
import static br.com.caelum.vraptor.proxy.CDIProxies.isCDIProxy;
import static br.com.caelum.vraptor.proxy.CDIProxies.unproxifyIfPossible;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import javax.enterprise.context.Dependent;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import org.junit.Test;
import org.junit.runner.RunWith;
import br.com.caelum.vraptor.WeldJunitRunner;
@RunWith(WeldJunitRunner.class)
public class CDIProxiesTest {
@Inject private AnyProxiableBean proxiable;
@Inject private NonProxiableBean nonProxiable;
@Test
public void shoulIdentifyCDIProxies() {
assertTrue(isCDIProxy(proxiable.getClass()));
assertFalse(isCDIProxy(nonProxiable.getClass()));
}
@Test
public void shouldUnproxifyCDIProxies() {
AnyProxiableBean bean = unproxifyIfPossible(proxiable);
assertFalse(isCDIProxy(bean.getClass()));
}
@Test
public void shouldReturnTheBeanIfItsNotCDIProxy() {
NonProxiableBean bean = unproxifyIfPossible(nonProxiable);
assertThat(bean, equalTo(nonProxiable));
}
}
@RequestScoped class AnyProxiableBean {}
@Dependent class NonProxiableBean {}