Skip to content
This repository was archived by the owner on Oct 24, 2020. It is now read-only.

Commit e4cfe9a

Browse files
committed
Add more tests
1 parent edece55 commit e4cfe9a

File tree

13 files changed

+219
-2
lines changed

13 files changed

+219
-2
lines changed

deployment/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@
7474
<artifactId>quarkus-extension-processor</artifactId>
7575
<version>${quarkus.version}</version>
7676
</path>
77+
<path>
78+
<groupId>org.seasar.doma</groupId>
79+
<artifactId>doma-processor</artifactId>
80+
<version>${doma.version}</version>
81+
</path>
7782
</annotationProcessorPaths>
7883
</configuration>
7984
</plugin>

deployment/src/test/java/org/seasar/doma/quarkus/deployment/HotReplacementResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
public class HotReplacementResource {
1616

1717
public static final String SQL_FILE =
18-
"META-INF/org/seasar/doma/quarkus/deployment/MyEntityDao/select.sql";
18+
"META-INF/org/seasar/doma/quarkus/deployment/model/MyEntityDao/select.sql";
1919

2020
public static final String SCRIPT_FILE =
21-
"META-INF/org/seasar/doma/quarkus/deployment/MyEntityDao/create.script";
21+
"META-INF/org/seasar/doma/quarkus/deployment/model/MyEntityDao/create.script";
2222

2323
@Inject Dialect dialect;
2424
@Inject SqlFileRepository sqlFileRepository;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.seasar.doma.quarkus.deployment;
2+
3+
import java.util.Objects;
4+
import javax.ws.rs.GET;
5+
import javax.ws.rs.Path;
6+
import javax.ws.rs.PathParam;
7+
import javax.ws.rs.Produces;
8+
import javax.ws.rs.core.MediaType;
9+
import org.seasar.doma.quarkus.deployment.model.Locale;
10+
import org.seasar.doma.quarkus.deployment.model.MessageRepository;
11+
12+
@Path("/hello")
13+
public class MessageResource {
14+
15+
private final MessageRepository messageRepository;
16+
17+
public MessageResource(MessageRepository messageRepository) {
18+
this.messageRepository = Objects.requireNonNull(messageRepository);
19+
}
20+
21+
@GET
22+
@Produces(MediaType.TEXT_PLAIN)
23+
public String hello() {
24+
var messages = messageRepository.selectByLocale(new Locale("en", "US"));
25+
return messages.stream().findFirst().map(m -> m.text.getValue()).orElseGet(() -> "empty");
26+
}
27+
28+
@GET
29+
@Produces(MediaType.TEXT_PLAIN)
30+
@Path("/{id}")
31+
public String hello(@PathParam("id") int id) {
32+
var message = messageRepository.selectById(id);
33+
return message == null ? "empty" : message.text.getValue();
34+
}
35+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.seasar.doma.quarkus.deployment;
2+
3+
import static org.hamcrest.core.Is.is;
4+
5+
import io.quarkus.test.QuarkusUnitTest;
6+
import io.restassured.RestAssured;
7+
import org.jboss.shrinkwrap.api.ShrinkWrap;
8+
import org.jboss.shrinkwrap.api.asset.StringAsset;
9+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
10+
import org.junit.jupiter.api.Test;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
import org.seasar.doma.quarkus.deployment.model.Locale;
13+
import org.seasar.doma.quarkus.deployment.model.Message;
14+
import org.seasar.doma.quarkus.deployment.model.MessageDao;
15+
import org.seasar.doma.quarkus.deployment.model.MessageDaoImpl;
16+
import org.seasar.doma.quarkus.deployment.model.MessageRepository;
17+
import org.seasar.doma.quarkus.deployment.model.Message_;
18+
import org.seasar.doma.quarkus.deployment.model.Text;
19+
import org.seasar.doma.quarkus.deployment.model._Locale;
20+
import org.seasar.doma.quarkus.deployment.model._Message;
21+
import org.seasar.doma.quarkus.deployment.model._Text;
22+
23+
public class MessageResourceTest {
24+
25+
@RegisterExtension
26+
static QuarkusUnitTest runner =
27+
new QuarkusUnitTest()
28+
.setArchiveProducer(
29+
() ->
30+
ShrinkWrap.create(JavaArchive.class)
31+
.add(
32+
new StringAsset(
33+
"quarkus.datasource.db-kind=h2\n"
34+
+ "quarkus.datasource.username=USERNAME-NAMED\n"
35+
+ "quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:testing\n"
36+
+ "quarkus.datasource.jdbc.driver=org.h2.Driver\n"
37+
+ "quarkus.doma.sql-load-script=model.sql\n"
38+
+ "quarkus.doma.log.sql=true\n"),
39+
"application.properties")
40+
.addAsResource("model.sql")
41+
.addAsResource(
42+
"META-INF/org/seasar/doma/quarkus/deployment/model/MessageDao/selectById.sql")
43+
.addClasses(Text.class, _Text.class)
44+
.addClasses(Locale.class, _Locale.class)
45+
.addClasses(Message.class, Message_.class, _Message.class)
46+
.addClasses(MessageDao.class, MessageDaoImpl.class)
47+
.addClass(MessageRepository.class)
48+
.addClass(MessageResource.class));
49+
50+
@Test
51+
void testCriteriaAPI() {
52+
RestAssured.when().get("/hello").then().body(is("hello"));
53+
}
54+
55+
@Test
56+
void testSqlFile() {
57+
RestAssured.when().get("/hello/1").then().body(is("hello"));
58+
RestAssured.when().get("/hello/2").then().body(is("世界"));
59+
}
60+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.seasar.doma.quarkus.deployment.model;
2+
3+
import org.seasar.doma.Embeddable;
4+
5+
@Embeddable
6+
public class Locale {
7+
8+
public final String language;
9+
public final String country;
10+
11+
public Locale(String language, String country) {
12+
this.language = language;
13+
this.country = country;
14+
}
15+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.seasar.doma.quarkus.deployment.model;
2+
3+
import org.seasar.doma.Entity;
4+
import org.seasar.doma.Id;
5+
import org.seasar.doma.Metamodel;
6+
7+
@Entity(metamodel = @Metamodel)
8+
public class Message {
9+
10+
@Id public Integer id;
11+
public Text text;
12+
public Locale locale;
13+
14+
public Message() {}
15+
16+
public Message(Integer id, String text, Locale locale) {
17+
this.id = id;
18+
this.text = new Text(text);
19+
this.locale = locale;
20+
}
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.seasar.doma.quarkus.deployment.model;
2+
3+
import org.seasar.doma.Dao;
4+
import org.seasar.doma.Select;
5+
6+
@Dao
7+
public interface MessageDao {
8+
9+
@Select
10+
Message selectById(int id);
11+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.seasar.doma.quarkus.deployment.model;
2+
3+
import java.util.List;
4+
import java.util.Objects;
5+
import javax.enterprise.context.ApplicationScoped;
6+
import org.seasar.doma.jdbc.criteria.Entityql;
7+
8+
@ApplicationScoped
9+
public class MessageRepository {
10+
11+
private final Entityql entityql;
12+
private final MessageDao messageDao;
13+
14+
public MessageRepository(Entityql entityql, MessageDao messageDao) {
15+
this.entityql = Objects.requireNonNull(entityql);
16+
this.messageDao = Objects.requireNonNull(messageDao);
17+
}
18+
19+
public Message selectById(int id) {
20+
return messageDao.selectById(id);
21+
}
22+
23+
public List<Message> selectByLocale(Locale locale) {
24+
var m = new Message_();
25+
return entityql
26+
.from(m)
27+
.where(
28+
c -> {
29+
c.eq(m.locale.language, locale.language);
30+
c.eq(m.locale.country, locale.country);
31+
})
32+
.fetch();
33+
}
34+
35+
public void insert(Message message) {
36+
var m = new Message_();
37+
entityql.insert(m, message).execute();
38+
}
39+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.seasar.doma.quarkus.deployment.model;
2+
3+
import org.seasar.doma.Domain;
4+
5+
@Domain(valueType = String.class)
6+
public class Text {
7+
8+
private final String value;
9+
10+
public Text(String value) {
11+
this.value = value;
12+
}
13+
14+
public String getValue() {
15+
return value;
16+
}
17+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
select /*%expand*/*
2+
from message
3+
where id = /*id*/0

0 commit comments

Comments
 (0)