Skip to content

Commit

Permalink
Add test which verifies that a resource processed by RR retains inter…
Browse files Browse the repository at this point in the history
…faces as its bean types
  • Loading branch information
manovotn committed Nov 9, 2022
1 parent ea91fbe commit 47697e2
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.quarkus.rest.client.reactive.beanTypes;

public interface Alpha extends Delta {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.quarkus.rest.client.reactive.beanTypes;

public interface Beta extends Delta {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.quarkus.rest.client.reactive.beanTypes;

public interface Charlie extends Beta {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.quarkus.rest.client.reactive.beanTypes;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Path("/")
@RegisterRestClient(configKey = "hello2")
public interface Client extends Alpha {
@GET
@Produces(MediaType.TEXT_PLAIN)
String test();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.quarkus.rest.client.reactive.beanTypes;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;

import org.eclipse.microprofile.rest.client.inject.RestClient;

import io.quarkus.arc.Priority;

@Alternative()
@Priority(1)
@ApplicationScoped
@RestClient
public class ClientMock implements Client, Charlie {

@Override
public String test() {
return "hello from " + ClientMock.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.quarkus.rest.client.reactive.beanTypes;

public interface Delta {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.quarkus.rest.client.reactive.beanTypes;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import org.eclipse.microprofile.rest.client.inject.RestClient;

@ApplicationScoped
public class MyBean {

@Inject
@RestClient
Client client;

String test() {
return client.test();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package io.quarkus.rest.client.reactive.beanTypes;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.Set;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;

import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.arc.Arc;
import io.quarkus.test.QuarkusUnitTest;

/**
* Tests that resources processed by RR have bean types equivalent to that of the impl class plus all interfaces in
* their hierarchy
*/
public class ResourceBeanTypeTest {

@RegisterExtension
static final QuarkusUnitTest TEST = new QuarkusUnitTest()
.withApplicationRoot((jar) -> jar
.addClasses(Client.class, ClientMock.class, MyBean.class, Alpha.class, Beta.class,
Charlie.class, Delta.class));

@Inject
MyBean myBean;

@Test
void shouldHaveAllInterfaceTypes() {
// firstly, sanity check
assertThat(myBean.test()).isEqualTo("hello from " + ClientMock.class);

// now see what types does the Client bean have - the impl class and all interfaces should be in place
BeanManager beanManager = Arc.container().beanManager();
Set<Bean<?>> beans = beanManager.getBeans(Client.class, RestClient.LITERAL);
Bean<?> resolvedBean = beanManager.resolve(beans);
assertThat(resolvedBean.getScope()).isEqualTo(ApplicationScoped.class);
assertThat(resolvedBean.getTypes()).contains(Client.class, ClientMock.class, Alpha.class, Beta.class, Charlie.class,
Delta.class);
}
}

0 comments on commit 47697e2

Please sign in to comment.