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 }