Skip to content

Commit 21c605e

Browse files
authored
chore adding extra details to unit test scenarios (#2051)
* chore adding extra details to unit test scenarios * addressing review comments
1 parent 79dc30f commit 21c605e

File tree

4 files changed

+227
-61
lines changed

4 files changed

+227
-61
lines changed

src/test/java/net/sf/jsqlparser/statement/delete/DeleteTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
package net.sf.jsqlparser.statement.delete;
1111

1212
import java.io.StringReader;
13+
import java.util.List;
14+
1315
import net.sf.jsqlparser.JSQLParserException;
1416
import net.sf.jsqlparser.expression.LongValue;
1517
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
@@ -22,6 +24,9 @@
2224
import static org.junit.jupiter.api.Assertions.assertFalse;
2325
import static org.junit.jupiter.api.Assertions.assertThrows;
2426
import static org.junit.jupiter.api.Assertions.assertTrue;
27+
28+
import net.sf.jsqlparser.statement.select.SelectItem;
29+
import net.sf.jsqlparser.statement.select.WithItem;
2530
import org.junit.jupiter.api.Test;
2631

2732
public class DeleteTest {
@@ -118,8 +123,18 @@ public void testWith() throws JSQLParserException {
118123
+ "DELETE FROM cfe.instrument_ref\n"
119124
+ "WHERE id_instrument_ref = (SELECT id_instrument_ref\n"
120125
+ " FROM a)";
121-
122-
assertSqlCanBeParsedAndDeparsed(statement, true);
126+
Delete delete = (Delete) assertSqlCanBeParsedAndDeparsed(statement, true);
127+
List<WithItem> withItems = delete.getWithItemsList();
128+
assertEquals("cfe.instrument_ref", delete.getTable().getFullyQualifiedName());
129+
assertEquals(2, withItems.size());
130+
SelectItem selectItem1 = withItems.get(0).getSelect().getPlainSelect().getSelectItems().get(0);
131+
assertEquals("1", selectItem1.getExpression().toString());
132+
assertEquals(" id_instrument_ref", selectItem1.getAlias().toString());
133+
assertEquals(" a", withItems.get(0).getAlias().toString());
134+
SelectItem selectItem2 = withItems.get(1).getSelect().getPlainSelect().getSelectItems().get(0);
135+
assertEquals("1", selectItem2.getExpression().toString());
136+
assertEquals(" id_instrument_ref", selectItem2.getAlias().toString());
137+
assertEquals(" b", withItems.get(1).getAlias().toString());
123138
}
124139

125140
@Test

src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java

Lines changed: 71 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@
1616
import net.sf.jsqlparser.expression.JdbcParameter;
1717
import net.sf.jsqlparser.expression.LongValue;
1818
import net.sf.jsqlparser.expression.StringValue;
19+
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
1920
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
2021
import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList;
2122
import net.sf.jsqlparser.parser.CCJSqlParserManager;
2223
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
2324
import net.sf.jsqlparser.schema.Column;
2425
import net.sf.jsqlparser.schema.Table;
25-
import net.sf.jsqlparser.statement.select.AllColumns;
26-
import net.sf.jsqlparser.statement.select.PlainSelect;
27-
import net.sf.jsqlparser.statement.select.Select;
28-
import net.sf.jsqlparser.statement.select.Values;
26+
import net.sf.jsqlparser.statement.select.*;
2927
import net.sf.jsqlparser.statement.update.UpdateSet;
3028
import org.junit.jupiter.api.Disabled;
3129
import org.junit.jupiter.api.Test;
3230
import org.junit.jupiter.api.function.Executable;
3331

3432
import java.io.StringReader;
33+
import java.util.List;
3534

35+
import static junit.framework.Assert.assertNull;
3636
import static net.sf.jsqlparser.test.TestUtils.assertDeparse;
3737
import static net.sf.jsqlparser.test.TestUtils.assertOracleHintExists;
3838
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
@@ -277,12 +277,26 @@ public void testInsertSelect() throws JSQLParserException {
277277

278278
@Test
279279
public void testInsertWithSelect() throws JSQLParserException {
280-
assertSqlCanBeParsedAndDeparsed(
281-
"INSERT INTO mytable (mycolumn) WITH a AS (SELECT mycolumn FROM mytable) SELECT mycolumn FROM a",
282-
true);
283-
assertSqlCanBeParsedAndDeparsed(
284-
"INSERT INTO mytable (mycolumn) (WITH a AS (SELECT mycolumn FROM mytable) SELECT mycolumn FROM a)",
285-
true);
280+
String sqlStr1 = "INSERT INTO mytable (mycolumn) WITH a AS (SELECT mycolumn FROM mytable) SELECT mycolumn FROM a";
281+
Insert insert1 = (Insert) assertSqlCanBeParsedAndDeparsed(sqlStr1, true);
282+
List<WithItem> insertWithItems1 = insert1.getWithItemsList();
283+
List<WithItem> selectWithItems1 = insert1.getSelect().getWithItemsList();
284+
assertEquals("mytable", insert1.getTable().getFullyQualifiedName());
285+
assertNull(insertWithItems1);
286+
assertEquals(1, selectWithItems1.size());
287+
assertEquals("SELECT mycolumn FROM mytable", selectWithItems1.get(0).getSelect().getPlainSelect().toString());
288+
assertEquals(" a", selectWithItems1.get(0).getAlias().toString());
289+
290+
String sqlStr2 = "INSERT INTO mytable (mycolumn) (WITH a AS (SELECT mycolumn FROM mytable) SELECT mycolumn FROM a)";
291+
Insert insert2 = (Insert) assertSqlCanBeParsedAndDeparsed(sqlStr2, true);
292+
List<WithItem> insertWithItems2 = insert2.getWithItemsList();
293+
assertEquals("mytable", insert2.getTable().getFullyQualifiedName());
294+
assertNull(insertWithItems2);
295+
ParenthesedSelect select = (ParenthesedSelect) insert2.getSelect();
296+
List<WithItem> selectWithItems2 = select.getSelect().getWithItemsList();
297+
assertEquals(1, selectWithItems2.size());
298+
assertEquals("SELECT mycolumn FROM mytable", selectWithItems2.get(0).getSelect().getPlainSelect().toString());
299+
assertEquals(" a", selectWithItems2.get(0).getAlias().toString());
286300
}
287301

288302
@Test
@@ -348,9 +362,15 @@ public void testKeywordPrecisionIssue363() throws JSQLParserException {
348362

349363
@Test
350364
public void testWithDeparsingIssue406() throws JSQLParserException {
351-
assertSqlCanBeParsedAndDeparsed(
352-
"insert into mytab3 (a,b,c) select a,b,c from mytab where exists(with t as (select * from mytab2) select * from t)",
353-
true);
365+
String sqlStr = "insert into mytab3 (a,b,c) select a,b,c from mytab where exists(with t as (select * from mytab2) select * from t)";
366+
Insert insert = (Insert) assertSqlCanBeParsedAndDeparsed(sqlStr, true);
367+
List<WithItem> insertWithItems = insert.getWithItemsList();
368+
List<WithItem> selectWithItems = insert.getSelect().getWithItemsList();
369+
assertEquals("mytab3", insert.getTable().getFullyQualifiedName());
370+
assertNull(insertWithItems);
371+
assertNull(selectWithItems);
372+
ExistsExpression exists = (ExistsExpression) insert.getPlainSelect().getWhere();
373+
assertEquals("(WITH t AS (SELECT * FROM mytab2) SELECT * FROM t)", exists.getRightExpression().toString());
354374
}
355375

356376
@Test
@@ -390,9 +410,16 @@ public void testInsertKeyWordIntervalIssue682() throws JSQLParserException {
390410

391411
@Test
392412
public void testWithAtFront() throws JSQLParserException {
393-
assertSqlCanBeParsedAndDeparsed(
394-
"WITH foo AS ( SELECT attr FROM bar ) INSERT INTO lalelu (attr) SELECT attr FROM foo",
395-
true);
413+
String sqlStr = "WITH foo AS ( SELECT attr FROM bar ) INSERT INTO lalelu (attr) SELECT attr FROM foo";
414+
Insert insert = (Insert) assertSqlCanBeParsedAndDeparsed(sqlStr, true);
415+
List<WithItem> insertWithItems = insert.getWithItemsList();
416+
assertEquals("lalelu", insert.getTable().getFullyQualifiedName());
417+
assertEquals(1, insertWithItems.size());
418+
assertEquals("SELECT attr FROM bar", insertWithItems.get(0).getSelect().getPlainSelect().toString());
419+
assertEquals(" foo", insertWithItems.get(0).getAlias().toString());
420+
assertEquals("SELECT attr FROM foo", insert.getSelect().toString());
421+
assertEquals("foo", insert.getSelect().getPlainSelect().getFromItem().toString());
422+
assertEquals("[attr]", insert.getSelect().getPlainSelect().getSelectItems().toString());
396423
}
397424

398425
@Test
@@ -427,8 +454,16 @@ public void testDisableKeywordIssue945() throws JSQLParserException {
427454

428455
@Test
429456
public void testWithListIssue282() throws JSQLParserException {
430-
assertSqlCanBeParsedAndDeparsed(
431-
"WITH myctl AS (SELECT a, b FROM mytable) INSERT INTO mytable SELECT a, b FROM myctl");
457+
String sqlStr = "WITH myctl AS (SELECT a, b FROM mytable) INSERT INTO mytable SELECT a, b FROM myctl";
458+
Insert insert = (Insert) assertSqlCanBeParsedAndDeparsed(sqlStr, true);
459+
List<WithItem> insertWithItems = insert.getWithItemsList();
460+
assertEquals("mytable", insert.getTable().getFullyQualifiedName());
461+
assertEquals(1, insertWithItems.size());
462+
assertEquals("SELECT a, b FROM mytable", insertWithItems.get(0).getSelect().getPlainSelect().toString());
463+
assertEquals(" myctl", insertWithItems.get(0).getAlias().toString());
464+
assertEquals("SELECT a, b FROM myctl", insert.getSelect().toString());
465+
assertEquals("myctl", insert.getSelect().getPlainSelect().getFromItem().toString());
466+
assertEquals("[a, b]", insert.getSelect().getPlainSelect().getSelectItems().toString());
432467
}
433468

434469
@Test
@@ -468,8 +503,18 @@ public void testInsertUnionSelectIssue1491() throws JSQLParserException {
468503
assertSqlCanBeParsedAndDeparsed("insert into table1 (tf1,tf2,tf2)\n"
469504
+ "((select sf1,sf2,sf3 from s1)" + "union " + "(select rf1,rf2,rf2 from r1))",
470505
true);
506+
}
471507

472-
assertSqlCanBeParsedAndDeparsed("(with a as (select * from dual) select * from a)", true);
508+
@Test
509+
public void testWithSelectFromDual() throws JSQLParserException {
510+
String sqlStr = "(with a as (select * from dual) select * from a)";
511+
ParenthesedSelect parenthesedSelect = (ParenthesedSelect) assertSqlCanBeParsedAndDeparsed(sqlStr, true);
512+
List<WithItem> withItems = parenthesedSelect.getSelect().getWithItemsList();
513+
assertEquals(1, withItems.size());
514+
assertEquals("SELECT * FROM dual", withItems.get(0).getSelect().getPlainSelect().toString());
515+
assertEquals(" a", withItems.get(0).getAlias().toString());
516+
assertEquals("a", parenthesedSelect.getPlainSelect().getFromItem().toString());
517+
assertEquals("[*]", parenthesedSelect.getPlainSelect().getSelectItems().toString());
473518
}
474519

475520
@Test
@@ -528,6 +573,11 @@ public void insertOnConflictObjectsTest() throws JSQLParserException {
528573
String sqlStr = "WITH a ( a, b , c ) \n" + "AS (SELECT 1 , 2 , 3 )\n"
529574
+ "insert into test\n" + "select * from a";
530575
Insert insert = (Insert) CCJSqlParserUtil.parse(sqlStr);
576+
List<WithItem> withItems = insert.getWithItemsList();
577+
assertEquals("test", insert.getTable().getFullyQualifiedName());
578+
assertEquals(1, withItems.size());
579+
assertEquals("[1, 2, 3]", withItems.get(0).getSelect().getPlainSelect().getSelectItems().toString());
580+
assertEquals(" a", withItems.get(0).getAlias().toString());
531581

532582
Expression whereExpression = CCJSqlParserUtil.parseExpression("a=1", false);
533583
Expression valueExpression = CCJSqlParserUtil.parseExpression("b/2", false);
@@ -608,8 +658,7 @@ public void testDefaultValues() throws JSQLParserException {
608658
@Test
609659
public void testDefaultValuesWithAlias() throws JSQLParserException {
610660
String statement = "INSERT INTO mytable x DEFAULT VALUES";
611-
assertSqlCanBeParsedAndDeparsed(statement);
612-
Insert insert = (Insert) parserManager.parse(new StringReader(statement));
661+
Insert insert = (Insert) assertSqlCanBeParsedAndDeparsed(statement);
613662
assertEquals("mytable", insert.getTable().getFullyQualifiedName());
614663
assertEquals("INSERT INTO MYTABLE X DEFAULT VALUES", insert.toString().toUpperCase());
615664
assertEquals("x", insert.getTable().getAlias().getName());
@@ -623,8 +672,7 @@ public void testDefaultValuesWithAlias() throws JSQLParserException {
623672
@Test
624673
public void testDefaultValuesWithAliasAndAs() throws JSQLParserException {
625674
String statement = "INSERT INTO mytable AS x DEFAULT VALUES";
626-
assertSqlCanBeParsedAndDeparsed(statement);
627-
Insert insert = (Insert) parserManager.parse(new StringReader(statement));
675+
Insert insert = (Insert) assertSqlCanBeParsedAndDeparsed(statement);
628676
assertEquals("mytable", insert.getTable().getFullyQualifiedName());
629677
assertEquals("INSERT INTO MYTABLE AS X DEFAULT VALUES", insert.toString().toUpperCase());
630678
assertEquals("x", insert.getTable().getAlias().getName());

0 commit comments

Comments
 (0)