Skip to content

Add text blocks in test code #3347

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 35 additions & 35 deletions src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -155,16 +155,16 @@ public E getNullableResult(CallableStatement cs, int columnIndex) throws SQLExce

@Test
void registerJavaTypeInitializingTypeHandler() {
// @formatter:off
final String MAPPER_CONFIG = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
+ "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"https://mybatis.org/dtd/mybatis-3-config.dtd\">\n"
+ "<configuration>\n"
+ " <typeHandlers>\n"
+ " <typeHandler javaType=\"org.apache.ibatis.builder.XmlConfigBuilderTest$MyEnum\"\n"
+ " handler=\"org.apache.ibatis.builder.XmlConfigBuilderTest$EnumOrderTypeHandler\"/>\n"
+ " </typeHandlers>\n"
+ "</configuration>\n";
// @formatter:on
final String MAPPER_CONFIG = """
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeHandlers>
<typeHandler javaType="org.apache.ibatis.builder.XmlConfigBuilderTest$MyEnum"
handler="org.apache.ibatis.builder.XmlConfigBuilderTest$EnumOrderTypeHandler"/>
</typeHandlers>
</configuration>
""";

XMLConfigBuilder builder = new XMLConfigBuilder(new StringReader(MAPPER_CONFIG));
builder.parse();
Expand Down Expand Up @@ -283,15 +283,15 @@ void parseIsTwice() throws Exception {

@Test
void unknownSettings() {
// @formatter:off
final String MAPPER_CONFIG = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
+ "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"https://mybatis.org/dtd/mybatis-3-config.dtd\">\n"
+ "<configuration>\n"
+ " <settings>\n"
+ " <setting name=\"foo\" value=\"bar\"/>\n"
+ " </settings>\n"
+ "</configuration>\n";
// @formatter:on
final String MAPPER_CONFIG = """
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="foo" value="bar"/>
</settings>
</configuration>
""";

XMLConfigBuilder builder = new XMLConfigBuilder(new StringReader(MAPPER_CONFIG));
when(builder::parse);
Expand All @@ -301,15 +301,15 @@ void unknownSettings() {

@Test
void unknownJavaTypeOnTypeHandler() {
// @formatter:off
final String MAPPER_CONFIG = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
+ "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"https://mybatis.org/dtd/mybatis-3-config.dtd\">\n"
+ "<configuration>\n"
+ " <typeAliases>\n"
+ " <typeAlias type=\"a.b.c.Foo\"/>\n"
+ " </typeAliases>\n"
+ "</configuration>\n";
// @formatter:on
final String MAPPER_CONFIG = """
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="a.b.c.Foo"/>
</typeAliases>
</configuration>
""";

XMLConfigBuilder builder = new XMLConfigBuilder(new StringReader(MAPPER_CONFIG));
when(builder::parse);
Expand All @@ -319,13 +319,13 @@ void unknownJavaTypeOnTypeHandler() {

@Test
void propertiesSpecifyResourceAndUrlAtSameTime() {
// @formatter:off
final String MAPPER_CONFIG = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
+ "<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"https://mybatis.org/dtd/mybatis-3-config.dtd\">\n"
+ "<configuration>\n"
+ " <properties resource=\"a/b/c/foo.properties\" url=\"file:./a/b/c/jdbc.properties\"/>\n"
+ "</configuration>\n";
// @formatter:on
final String MAPPER_CONFIG = """
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="a/b/c/foo.properties" url="file:./a/b/c/jdbc.properties"/>
</configuration>
""";

XMLConfigBuilder builder = new XMLConfigBuilder(new StringReader(MAPPER_CONFIG));
when(builder::parse);
Expand Down
102 changes: 80 additions & 22 deletions src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2009-2023 the original author or authors.
* Copyright 2009-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -374,9 +374,18 @@ static MappedStatement createSelectAuthorWithIDof99MappedStatement(final Configu

static MappedStatement prepareComplexSelectBlogMappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
final SqlSource sqlSource = new StaticSqlSource(config,
"SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b"
+ " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ?");
final SqlSource sqlSource = new StaticSqlSource(config, """
SELECT b.id \
, b.author_id \
, b.title \
, a.username \
, a.password \
, a.email \
, a.bio\
FROM blog b\
INNER JOIN author a ON b.author_id = a.id\
WHERE b.id = ?\
""");
final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", int.class,
new ArrayList<ParameterMapping>() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -421,9 +430,18 @@ static MappedStatement prepareComplexSelectBlogMappedStatement(final Configurati

static MappedStatement prepareSelectBlogByIdAndAuthor(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
final SqlSource sqlSource = new StaticSqlSource(config,
"SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" + " FROM blog b"
+ " INNER JOIN author a ON b.author_id = a.id" + " WHERE b.id = ? and a.id = ?");
final SqlSource sqlSource = new StaticSqlSource(config, """
SELECT b.id\
, b.author_id\
, b.title\
, a.username\
, a.password\
, a.email\
, a.bio\
FROM blog b\
INNER JOIN author a ON b.author_id = a.id\
WHERE b.id = ? and a.id = ?\
""");
final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Map.class,
new ArrayList<ParameterMapping>() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -470,11 +488,24 @@ static MappedStatement prepareSelectBlogByIdAndAuthor(final Configuration config

static MappedStatement prepareSelectPostsForBlogMappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
final SqlSource sqlSource = new StaticSqlSource(config,
"SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id,"
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p"
+ " INNER JOIN post_tag pt ON pt.post_id = p.id" + " INNER JOIN tag t ON pt.tag_id = t.id"
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.blog_id = ?");
final SqlSource sqlSource = new StaticSqlSource(config, """
SELECT p.id\
, p.created_on\
, p.blog_id\
, p.section\
, p.subject\
, p.body\
, pt.tag_id\
, t.name as tag_name\
, c.id as comment_id\
, c.name as comment_name\
, c.comment\
FROM post p\
INNER JOIN post_tag pt ON pt.post_id = p.id\
INNER JOIN tag t ON pt.tag_id = t.id\
LEFT OUTER JOIN comment c ON c.post_id = p.id\
WHERE p.blog_id = ?\
""");
final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class,
new ArrayList<ParameterMapping>() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -548,11 +579,24 @@ static MappedStatement prepareSelectPostsForBlogMappedStatement(final Configurat

static MappedStatement prepareSelectPostMappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
final SqlSource sqlSource = new StaticSqlSource(config,
"SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id,"
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p"
+ " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" + " LEFT OUTER JOIN tag t ON pt.tag_id = t.id"
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.id = ?");
final SqlSource sqlSource = new StaticSqlSource(config, """
SELECT p.id\
, p.created_on\
, p.blog_id\
, p.section\
, p.subject\
, p.body\
, pt.tag_id\
, t.name as tag_name\
, c.id as comment_id\
, c.name as comment_name\
, c.comment\
FROM post p\
LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id\
LEFT OUTER JOIN tag t ON pt.tag_id = t.id\
LEFT OUTER JOIN comment c ON c.post_id = p.id\
WHERE p.id = ?\
""");
final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class,
new ArrayList<ParameterMapping>() {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -624,11 +668,25 @@ static MappedStatement prepareSelectPostMappedStatement(final Configuration conf

static MappedStatement prepareSelectPostWithBlogByAuthorMappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
final SqlSource sqlSource = new StaticSqlSource(config,
"SELECT p.id, p.created_on, p.blog_id, p.author_id, p.section, p.subject, p.body, pt.tag_id,"
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" + " FROM post p"
+ " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" + " LEFT OUTER JOIN tag t ON pt.tag_id = t.id"
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" + " WHERE p.id = ?");
final SqlSource sqlSource = new StaticSqlSource(config, """
SELECT p.id\
, p.created_on\
, p.blog_id\
, p.author_id\
, p.section\
, p.subject\
, p.body\
, pt.tag_id\
, t.name as tag_name\
, c.id as comment_id\
, c.name as comment_name\
, c.comment\
FROM post p\
LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id\
LEFT OUTER JOIN tag t ON pt.tag_id = t.id\
LEFT OUTER JOIN comment c ON c.post_id = p.id\
WHERE p.id = ?\
""");
final ParameterMap parameterMap = new ParameterMap.Builder(config, "defaultParameterMap", Author.class,
new ArrayList<ParameterMapping>() {
private static final long serialVersionUID = 1L;
Expand Down
113 changes: 49 additions & 64 deletions src/test/java/org/apache/ibatis/jdbc/SQLTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,17 @@ void shouldDemonstrateProvidedStringBuilder() {
// From the tutorial
final String sql = example1().usingAppender(sb).toString();

// @formatter:off
assertEquals("SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON\n"
+ "FROM PERSON P, ACCOUNT A\n"
+ "INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID\n"
+ "INNER JOIN COMPANY C on D.COMPANY_ID = C.ID\n"
+ "WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) \n"
+ "OR (P.LAST_NAME like ?)\n"
+ "GROUP BY P.ID\n"
+ "HAVING (P.LAST_NAME like ?) \n"
+ "OR (P.FIRST_NAME like ?)\n"
+ "ORDER BY P.ID, P.FULL_NAME", sql);
// @formatter:on
assertEquals("""
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON
FROM PERSON P, ACCOUNT A
INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID
INNER JOIN COMPANY C on D.COMPANY_ID = C.ID
WHERE (P.ID = A.ID AND P.FIRST_NAME like ?)\s
OR (P.LAST_NAME like ?)
GROUP BY P.ID
HAVING (P.LAST_NAME like ?)\s
OR (P.FIRST_NAME like ?)
ORDER BY P.ID, P.FULL_NAME""", sql);
}

@Test
Expand All @@ -57,89 +56,75 @@ void shouldDemonstrateMixedStyle() {
}
}.toString();

// @formatter:off
assertEquals(""
+ "SELECT id, name\n"
+ "FROM PERSON A\n"
+ "WHERE (name like ? AND id = ?)", sql);
// @formatter:on
assertEquals("""
SELECT id, name
FROM PERSON A
WHERE (name like ? AND id = ?)""", sql);
}

@Test
void shouldDemonstrateFluentStyle() {
// Fluent Style
final String sql = new SQL().SELECT("id, name").FROM("PERSON A").WHERE("name like ?").WHERE("id = ?").toString();

// @formatter:off
assertEquals(""
+ "SELECT id, name\n"
+ "FROM PERSON A\n"
+ "WHERE (name like ? AND id = ?)", sql);
// @formatter:on
assertEquals("""
SELECT id, name
FROM PERSON A
WHERE (name like ? AND id = ?)""", sql);
}

@Test
void shouldProduceExpectedSimpleSelectStatement() {
// @formatter:off
final String expected =
"SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\n"
+ "FROM PERSON P\n"
+ "WHERE (P.ID like #id# AND P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)\n"
+ "ORDER BY P.LAST_NAME";
// @formatter:on
final String expected = """
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME
FROM PERSON P
WHERE (P.ID like #id# AND P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)
ORDER BY P.LAST_NAME""";
assertEquals(expected, example2("a", "b", "c"));
}

@Test
void shouldProduceExpectedSimpleSelectStatementMissingFirstParam() {
// @formatter:off
final String expected =
"SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\n"
+ "FROM PERSON P\n"
+ "WHERE (P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)\n"
+ "ORDER BY P.LAST_NAME";
// @formatter:on
final String expected = """
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME
FROM PERSON P
WHERE (P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)
ORDER BY P.LAST_NAME""";
assertEquals(expected, example2(null, "b", "c"));
}

@Test
void shouldProduceExpectedSimpleSelectStatementMissingFirstTwoParams() {
// @formatter:off
final String expected =
"SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\n"
+ "FROM PERSON P\n"
+ "WHERE (P.LAST_NAME like #lastName#)\n"
+ "ORDER BY P.LAST_NAME";
// @formatter:on
final String expected = """
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME
FROM PERSON P
WHERE (P.LAST_NAME like #lastName#)
ORDER BY P.LAST_NAME""";
assertEquals(expected, example2(null, null, "c"));
}

@Test
void shouldProduceExpectedSimpleSelectStatementMissingAllParams() {
// @formatter:off
final String expected =
"SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\n"
+ "FROM PERSON P\n"
+ "ORDER BY P.LAST_NAME";
// @formatter:on
final String expected = """
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME
FROM PERSON P
ORDER BY P.LAST_NAME""";
assertEquals(expected, example2(null, null, null));
}

@Test
void shouldProduceExpectedComplexSelectStatement() {
// @formatter:off
final String expected =
"SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON\n"
+ "FROM PERSON P, ACCOUNT A\n"
+ "INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID\n"
+ "INNER JOIN COMPANY C on D.COMPANY_ID = C.ID\n"
+ "WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) \n"
+ "OR (P.LAST_NAME like ?)\n"
+ "GROUP BY P.ID\n"
+ "HAVING (P.LAST_NAME like ?) \n"
+ "OR (P.FIRST_NAME like ?)\n"
+ "ORDER BY P.ID, P.FULL_NAME";
// @formatter:on
final String expected = """
SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON
FROM PERSON P, ACCOUNT A
INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID
INNER JOIN COMPANY C on D.COMPANY_ID = C.ID
WHERE (P.ID = A.ID AND P.FIRST_NAME like ?)\s
OR (P.LAST_NAME like ?)
GROUP BY P.ID
HAVING (P.LAST_NAME like ?)\s
OR (P.FIRST_NAME like ?)
ORDER BY P.ID, P.FULL_NAME""";
assertEquals(expected, example1().toString());
}

Expand Down
Loading
Loading