Skip to content

Commit fb62252

Browse files
db: createQuery and waitTo on query result (#798)
1 parent 45617f9 commit fb62252

17 files changed

Lines changed: 376 additions & 221 deletions

File tree

webtau-core/src/main/java/org/testingisdocumenting/webtau/expectation/ActualPath.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/*
2+
* Copyright 2021 webtau maintainers
23
* Copyright 2019 TWO SIGMA OPEN SOURCE, LLC
34
*
45
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,7 +18,7 @@
1718
package org.testingisdocumenting.webtau.expectation;
1819

1920
public class ActualPath {
20-
private String path;
21+
private final String path;
2122

2223
public ActualPath(String path) {
2324
if (path == null) {
@@ -39,10 +40,6 @@ public String getPath() {
3940
return path;
4041
}
4142

42-
private String attachToPath(String suffix) {
43-
return isEmpty() ? suffix : path + suffix;
44-
}
45-
4643
public boolean isEmpty() {
4744
return path.isEmpty();
4845
}

webtau-core/src/main/java/org/testingisdocumenting/webtau/reporter/TokenizedMessage.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/*
2+
* Copyright 2021 webtau maintainers
23
* Copyright 2019 TWO SIGMA OPEN SOURCE, LLC
34
*
45
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +28,7 @@
2728
import static java.util.stream.Collectors.toList;
2829

2930
public class TokenizedMessage implements Iterable<MessageToken> {
30-
private List<MessageToken> tokens;
31+
private final List<MessageToken> tokens;
3132

3233
public TokenizedMessage() {
3334
tokens = new ArrayList<>();

webtau-core/src/main/java/org/testingisdocumenting/webtau/reporter/ValueMatcherExpectationSteps.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ public static void waitNotStep(Object context, Object value, StepReportOptions s
5858
}
5959

6060
private static void executeStep(Object context, Object value, TokenizedMessage elementDescription,
61-
ValueMatcher valueMatcher, boolean isNegative,
62-
TokenizedMessage messageStart, Runnable expectationValidation,
63-
StepReportOptions stepReportOptions) {
61+
ValueMatcher valueMatcher, boolean isNegative,
62+
TokenizedMessage messageStart, Runnable expectationValidation,
63+
StepReportOptions stepReportOptions) {
6464
WebTauStep step = createStep(context,
6565
messageStart.add(elementDescription)
6666
.add(matcher(isNegative ? valueMatcher.negativeMatchingMessage() : valueMatcher.matchingMessage())),

webtau-db/src/main/java/org/testingisdocumenting/webtau/db/Database.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package org.testingisdocumenting.webtau.db;
1818

19+
import org.testingisdocumenting.webtau.data.table.TableData;
1920
import org.testingisdocumenting.webtau.reporter.StepReportOptions;
2021
import org.testingisdocumenting.webtau.reporter.WebTauStep;
2122

23+
import java.util.Collections;
2224
import java.util.Map;
2325

2426
import static org.testingisdocumenting.webtau.reporter.IntegrationTestsMessageBuilder.*;
@@ -36,22 +38,28 @@ public DatabaseTable table(String name) {
3638
return new DatabaseTable(dataSource, name);
3739
}
3840

39-
public DatabaseQueryResult query(String query) {
40-
WebTauStep step = createStep(null,
41-
tokenizedMessage(action("running DB query"), stringValue(query), ON, id(dataSource.getLabel())),
42-
() -> tokenizedMessage(action("ran DB query"), stringValue(query), ON, id(dataSource.getLabel())),
43-
() -> QueryRunnerUtils.runQuery(dataSource.getDataSource(), query));
41+
public DbQuery createQuery(String query) {
42+
return QueryRunnerUtils.createQuery(dataSource, query);
43+
}
4444

45-
return (DatabaseQueryResult) step.execute(StepReportOptions.REPORT_ALL);
45+
public DbQuery createQuery(String query, Map<String, Object> params) {
46+
return QueryRunnerUtils.createQuery(dataSource, query, params);
4647
}
4748

48-
public DatabaseQueryResult query(String query, Map<String, Object> params) {
49-
WebTauStep step = createStep(null,
50-
tokenizedMessage(action("running DB query"), stringValue(query), ON, id(dataSource.getLabel()), WITH, stringValue(params)),
51-
() -> tokenizedMessage(action("ran DB query"), stringValue(query), ON, id(dataSource.getLabel())),
52-
() -> QueryRunnerUtils.runQuery(dataSource.getDataSource(), query, params));
49+
public TableData queryTableData(String query) {
50+
return queryTableData(query, Collections.emptyMap());
51+
}
52+
53+
public TableData queryTableData(String query, Map<String, Object> params) {
54+
return createQuery(query, params).queryTableData();
55+
}
56+
57+
public <E> E querySingleValue(String query) {
58+
return querySingleValue(query, Collections.emptyMap());
59+
}
5360

54-
return (DatabaseQueryResult) step.execute(StepReportOptions.REPORT_ALL);
61+
public <E> E querySingleValue(String query, Map<String, Object> params) {
62+
return createQuery(query, params).querySingleValue();
5563
}
5664

5765
public void update(String query) {

webtau-db/src/main/java/org/testingisdocumenting/webtau/db/DatabaseCompareToHandler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
public class DatabaseCompareToHandler implements CompareToHandler {
2727
@Override
2828
public boolean handleEquality(Object actual, Object expected) {
29-
return actual instanceof DatabaseQueryResult ||
29+
return actual instanceof DbQuery ||
3030
actual instanceof DatabaseTable;
3131
}
3232

@@ -37,15 +37,15 @@ public void compareEqualOnly(CompareToComparator comparator, ActualPath actualPa
3737

3838
private Object extractActual(Object expected, Object actual) {
3939
if (actual instanceof DatabaseTable) {
40-
return ((DatabaseTable) actual).query().getTableData();
40+
return ((DatabaseTable) actual).createQuery().queryTableDataNoStep();
4141
}
4242

43-
DatabaseQueryResult actualResult = (DatabaseQueryResult) actual;
44-
if (actualResult.isSingleValue()) {
45-
return actualResult.getSingleValue();
43+
DbQuery actualResult = (DbQuery) actual;
44+
TableData tableData = actualResult.queryTableDataNoStep();
45+
if (actualResult.isSingleValue(tableData)) {
46+
return actualResult.getUnderlyingSingleValue(tableData);
4647
}
4748

48-
TableData tableData = actualResult.getTableData();
4949
if (expected instanceof Map && tableData.numberOfRows() == 1) {
5050
return tableData.row(0);
5151
}

webtau-db/src/main/java/org/testingisdocumenting/webtau/db/DatabaseFacade.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616

1717
package org.testingisdocumenting.webtau.db;
1818

19+
import org.testingisdocumenting.webtau.data.table.TableData;
20+
1921
import javax.sql.DataSource;
22+
import java.util.Collections;
2023
import java.util.Map;
2124

2225
public class DatabaseFacade {
@@ -37,12 +40,28 @@ public DatabaseTable table(String tableName) {
3740
return from(getPrimaryDataSource()).table(tableName);
3841
}
3942

40-
public DatabaseQueryResult query(String query) {
41-
return from(getPrimaryDataSource()).query(query);
43+
public DbQuery createQuery(String query) {
44+
return from(getPrimaryDataSource()).createQuery(query);
45+
}
46+
47+
public DbQuery createQuery(String query, Map<String, Object> params) {
48+
return from(getPrimaryDataSource()).createQuery(query, params);
49+
}
50+
51+
public TableData queryTableData(String query) {
52+
return from(getPrimaryDataSource()).queryTableData(query);
53+
}
54+
55+
public TableData queryTableData(String query, Map<String, Object> params) {
56+
return from(getPrimaryDataSource()).queryTableData(query, params);
57+
}
58+
59+
public <E> E querySingleValue(String query) {
60+
return from(getPrimaryDataSource()).querySingleValue(query);
4261
}
4362

44-
public DatabaseQueryResult query(String query, Map<String, Object> params) {
45-
return from(getPrimaryDataSource()).query(query, params);
63+
public <E> E querySingleValue(String query, Map<String, Object> params) {
64+
return from(getPrimaryDataSource()).querySingleValue(query, params);
4665
}
4766

4867
public void update(String query) {

webtau-db/src/main/java/org/testingisdocumenting/webtau/db/DatabaseQueryResult.java

Lines changed: 0 additions & 97 deletions
This file was deleted.

webtau-db/src/main/java/org/testingisdocumenting/webtau/db/DatabaseTable.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,12 @@
2020
import org.testingisdocumenting.webtau.data.table.TableData;
2121
import org.testingisdocumenting.webtau.db.gen.SqlQueriesGenerator;
2222
import org.testingisdocumenting.webtau.reporter.MessageToken;
23-
import org.testingisdocumenting.webtau.reporter.StepReportOptions;
24-
import org.testingisdocumenting.webtau.reporter.WebTauStep;
2523

2624
import java.sql.SQLException;
2725

2826
import static org.testingisdocumenting.webtau.reporter.IntegrationTestsMessageBuilder.*;
29-
import static org.testingisdocumenting.webtau.reporter.WebTauStep.createAndExecuteStep;
30-
import static org.testingisdocumenting.webtau.reporter.WebTauStep.createStep;
3127
import static org.testingisdocumenting.webtau.reporter.TokenizedMessage.tokenizedMessage;
28+
import static org.testingisdocumenting.webtau.reporter.WebTauStep.createAndExecuteStep;
3229

3330
class DatabaseTable {
3431
private final LabeledDataSource dataSource;
@@ -48,13 +45,12 @@ INTO, createMessageId()),
4845
() -> insertStep(tableData));
4946
}
5047

51-
public DatabaseQueryResult query() {
52-
WebTauStep step = createStep(null,
53-
tokenizedMessage(action("querying"), createMessageId()),
54-
() -> tokenizedMessage(action("queried"), createMessageId()),
55-
() -> QueryRunnerUtils.runQuery(dataSource.getDataSource(), SqlQueriesGenerator.query(name)));
48+
public TableData query() {
49+
return createQuery().queryTableData();
50+
}
5651

57-
return (DatabaseQueryResult) step.execute(StepReportOptions.REPORT_ALL);
52+
public DbQuery createQuery() {
53+
return QueryRunnerUtils.createQuery(dataSource, SqlQueriesGenerator.query(name));
5854
}
5955

6056
private void insertStep(TableData tableData) {

0 commit comments

Comments
 (0)