View Javadoc
1   package com.github.jonasrutishauser.transactional.event.quarkus.deployment.it;
2   
3   import static org.awaitility.Awaitility.await;
4   import static org.hamcrest.CoreMatchers.containsString;
5   
6   import org.awaitility.core.ThrowingRunnable;
7   import org.jboss.shrinkwrap.api.asset.EmptyAsset;
8   import org.junit.jupiter.api.Test;
9   import org.junit.jupiter.api.extension.RegisterExtension;
10  
11  import io.quarkus.test.QuarkusDevModeTest;
12  import io.restassured.RestAssured;
13  
14  public class TransactionalEventChangeIT {
15  
16      @RegisterExtension
17      static final QuarkusDevModeTest test = new QuarkusDevModeTest() //
18              .withApplicationRoot(archive -> archive //
19                      .addClasses(Messages.class, RequestContextProbe.class, TestEvent.class, TestEventHandler.class, TestResource.class) //
20                      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") //
21              );
22  
23      @Test
24      void testRoundTrip() {
25          postMessage("test message");
26          await().untilAsserted(processedMessagesContains("test message"));
27  
28          test.modifySourceFile(TestEventHandler.class, s -> s.replace("Dependent", "ApplicationScoped"));
29  
30          await().untilAsserted(() -> postMessage("modified message"));
31          await().untilAsserted(processedMessagesContains("modified message"));
32      }
33  
34      private ThrowingRunnable processedMessagesContains(String content) {
35          return () -> RestAssured.when() //
36                  .get("/test") //
37                  .then() //
38                  .assertThat() //
39                  .body(containsString(content));
40      }
41  
42      private void postMessage(String message) {
43          RestAssured.given() //
44                  .body(message) //
45                  .when() //
46                  .post("/test/publish") //
47                  .then() //
48                  .assertThat() //
49                  .statusCode(204);
50      }
51  }