Skip to content

Commit 1c54982

Browse files
Merge pull request #21 from aquality-automation/feature/CannotImportIntoLastTestRun
Feature/cannot import into last test run
2 parents 78a59e5 + 87dc9a8 commit 1c54982

File tree

5 files changed

+96
-42
lines changed

5 files changed

+96
-42
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# CHANGELOG
2+
3+
## 0.3.2 (unreleased)
4+
5+
Bugfixes:
6+
7+
- Import: Import to latest test Run not working when importing more than one file -> [View Issue](https://github.com/aquality-automation/aquality-tracking-ui/issues/29)
8+
9+
## 0.3.1 (2019-08-30)
10+
11+
Features:
12+
13+
- Add ability to set Default Email Pattern
14+
- Add regex search to Results Searcher
15+
16+
Bugfixes:
17+
18+
- Fix Fail Reason Search

src/main/java/main/controllers/Project/SuiteController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ public List<TestSuiteDto> get(TestSuiteDto template) throws AqualityException {
4646
return get(template, false);
4747
}
4848

49+
public TestSuiteDto get(String name, Integer projectId) throws AqualityException {
50+
TestSuiteDto template = new TestSuiteDto();
51+
template.setName(name);
52+
template.setProject_id(projectId);
53+
try{
54+
return get(template, false).get(0);
55+
} catch (Exception e) {
56+
throw new AqualityException("The '%s' suite does not exist.", name);
57+
}
58+
}
59+
4960
@Override
5061
public boolean delete(TestSuiteDto template) throws AqualityException {
5162
if(baseUser.isManager() || baseUser.getProjectUserBySuiteId(template.getId()).isManager()){

src/main/java/main/controllers/Project/TestRunController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,18 @@ public List<TestRunStatisticDto> get(TestRunStatisticDto template) throws Aquali
6565
return testRunStatisticDao.searchAll(template);
6666
}
6767

68+
public TestRunDto getLastSuiteTestRun(Integer suiteId, Integer projectId) throws AqualityException {
69+
TestRunDto template = new TestRunDto();
70+
template.setTest_suite_id(suiteId);
71+
template.setProject_id(projectId);
72+
List<TestRunDto> testRuns = get(template, false, 1);
73+
if(testRuns.size() > 0){
74+
return testRuns.get(0);
75+
}
76+
77+
throw new AqualityException("There are no test runs for suite with '%s' id!", suiteId);
78+
}
79+
6880
@Override
6981
public boolean delete(TestRunDto template) throws AqualityException {
7082
if(baseUser.isManager() || baseUser.getProjectUser(template.getProject_id()).isEditor()){

src/main/java/main/exceptions/AqualityException.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ public class AqualityException extends Exception {
88
public AqualityException(String error) {
99
super(error);
1010
}
11+
12+
public AqualityException(String error, Object... args) {
13+
super(String.format(error, args));
14+
}
1115
}

src/main/java/main/view/Project/ExecuteImportServlet.java

Lines changed: 51 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33

44
import main.Session;
5+
import main.controllers.Project.SuiteController;
6+
import main.controllers.Project.TestRunController;
57
import main.exceptions.AqualityException;
8+
import main.exceptions.AqualityQueryParameterException;
69
import main.model.db.imports.Importer;
710
import main.model.db.imports.TestNameNodeType;
8-
import main.model.dto.ImportDto;
9-
import main.model.dto.ImportTokenDto;
10-
import main.model.dto.TestRunDto;
11-
import main.model.dto.TestSuiteDto;
11+
import main.model.dto.*;
1212
import main.utils.FileUtils;
1313
import main.utils.PathUtils;
1414
import main.view.BaseServlet;
@@ -27,36 +27,38 @@
2727
@WebServlet("/import")
2828
@MultipartConfig
2929
public class ExecuteImportServlet extends BaseServlet implements IPost {
30+
31+
private Integer projectId;
32+
private String buildName;
33+
private String author;
34+
private String suiteName;
35+
private Integer testRunId;
36+
private Boolean addToLastTestRun;
37+
private String environment;
38+
private String cilink;
39+
private Boolean singleTestRun;
40+
private String format;
41+
private String importToken;
42+
private SuiteController suiteController;
43+
private TestRunController testRunController;
44+
3045
@Override
3146
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
3247
setPostResponseHeaders(resp);
3348
try {
34-
Boolean singleTestRun = getBooleanQueryParameter(req, ImportParams.singleTestRun.name());
35-
Integer projectId = getIntegerQueryParameter(req, ImportParams.projectId.name());
36-
String format = getStringQueryParameter(req, ImportParams.format.name());
37-
String buildName = getStringQueryParameter(req, ImportParams.buildName.name());
38-
String author = getStringQueryParameter(req, ImportParams.author.name());
39-
String suiteName = getStringQueryParameter(req, ImportParams.suite.name());
40-
String importToken = getStringQueryParameter(req, ImportParams.importToken.name());
41-
Integer testRunId = getIntegerQueryParameter(req, ImportParams.testRunId.name());
42-
Boolean addToLastTestRun = getBooleanQueryParameter(req, ImportParams.addToLastTestRun.name());
43-
String environment = getStringQueryParameter(req, ImportParams.environment.name());
44-
String cilink = getStringQueryParameter(req, ImportParams.cilink.name());
45-
46-
validateRequest(singleTestRun, projectId, format, buildName, author, suiteName);
47-
48-
Session session;
49-
if (importToken != null) {
50-
session = new Session(importToken, projectId);
51-
} else {
52-
session = createSession(req);
53-
}
49+
readParameters(req);
50+
Session session = importToken != null
51+
? new Session(importToken, projectId)
52+
: createSession(req);
53+
54+
suiteController = session.controllerFactory.getHandler(new TestSuiteDto());
55+
testRunController = session.controllerFactory.getHandler(new TestRunDto());
5456

5557
List<String> filePaths = doUpload(req, resp, projectId);
5658

5759
Importer importer = session.getImporter(
5860
filePaths,
59-
prepareTestRun(session, testRunId, addToLastTestRun, environment, cilink, projectId, buildName, author, suiteName),
61+
prepareTestRun(),
6062
getStringQueryParameter(req, ImportParams.pattern.name()),
6163
getStringQueryParameter(req, ImportParams.format.name()),
6264
getTestNameNodeType(req),
@@ -77,11 +79,25 @@ public void doOptions(HttpServletRequest req, HttpServletResponse resp) {
7779
setPostResponseHeaders(resp);
7880
}
7981

80-
private TestRunDto prepareTestRun(Session session, Integer testRunId, Boolean addToLastTestRun, String environment, String cilink,
81-
Integer projectId, String buildName, String author, String suiteName) throws AqualityException {
82+
private void readParameters(HttpServletRequest req) throws AqualityQueryParameterException {
83+
singleTestRun = getBooleanQueryParameter(req, ImportParams.singleTestRun.name());
84+
format = getStringQueryParameter(req, ImportParams.format.name());
85+
importToken = getStringQueryParameter(req, ImportParams.importToken.name());
86+
projectId = getIntegerQueryParameter(req, ImportParams.projectId.name());
87+
buildName = getStringQueryParameter(req, ImportParams.buildName.name());
88+
author = getStringQueryParameter(req, ImportParams.author.name());
89+
suiteName = getStringQueryParameter(req, ImportParams.suite.name());
90+
testRunId = getIntegerQueryParameter(req, ImportParams.testRunId.name());
91+
addToLastTestRun = getBooleanQueryParameter(req, ImportParams.addToLastTestRun.name());
92+
environment = getStringQueryParameter(req, ImportParams.environment.name());
93+
cilink = getStringQueryParameter(req, ImportParams.cilink.name());
94+
validateRequest();
95+
}
8296

97+
private TestRunDto prepareTestRun() throws AqualityException {
8398
TestSuiteDto testSuiteTemplate = new TestSuiteDto();
8499
testSuiteTemplate.setName(suiteName);
100+
testSuiteTemplate.setProject_id(projectId);
85101

86102
TestRunDto testRunTemplate = new TestRunDto();
87103
testRunTemplate.setProject_id(projectId);
@@ -90,45 +106,38 @@ private TestRunDto prepareTestRun(Session session, Integer testRunId, Boolean ad
90106
testRunTemplate.setAuthor(author);
91107
testRunTemplate.setExecution_environment(environment);
92108
testRunTemplate.setTest_suite(testSuiteTemplate);
93-
testRunTemplate.setId(getTestRunId(session, testRunId, addToLastTestRun, testSuiteTemplate));
109+
testRunTemplate.setId(getTestRunId());
94110

95111
return testRunTemplate;
96112
}
97113

98-
private Integer getTestRunId(Session session, Integer testRunId, Boolean addToLastTestRun, TestSuiteDto suite) throws AqualityException {
99-
if(testRunId != null ){
114+
private Integer getTestRunId() throws AqualityException {
115+
if(testRunId != null) {
100116
return testRunId;
101117
}
102118

103119
if(addToLastTestRun) {
104-
List<TestSuiteDto> testSuites = session.controllerFactory.getHandler(suite).get(suite);
105-
TestRunDto testRunTemplate = new TestRunDto();
106-
testRunTemplate.setTest_suite_id(testSuites.get(0).getId());
107-
108-
List<TestRunDto> testRuns = session.controllerFactory.getHandler(testRunTemplate).get(testRunTemplate);
109-
if(!testRuns.isEmpty()){
110-
return testRuns.get(0).getId();
111-
}
120+
return testRunController.getLastSuiteTestRun(suiteController.get(suiteName, projectId).getId(), projectId).getId();
112121
}
113122

114123
return null;
115124
}
116125

117-
private void validateRequest(Boolean singleTestRun, Integer projectId, String format, String buildName, String author, String suiteName) throws InvalidParameterException{
126+
private void validateRequest() throws AqualityQueryParameterException {
118127

119128
if(singleTestRun)
120129
{
121130
if (projectId == null || format == null || buildName == null || author == null){
122-
throw new InvalidParameterException("ProjectId or/and Format or/and Author or/and BuildName parameters are missed.");
131+
throw new AqualityQueryParameterException("ProjectId or/and Format or/and Author or/and BuildName parameters are missed.");
123132
}
124133
}else{
125134
if (projectId == null || format == null){
126-
throw new InvalidParameterException("ProjectId or/and Format parameters are missed.");
135+
throw new AqualityQueryParameterException("ProjectId or/and Format parameters are missed.");
127136
}
128137
}
129138
if(format.equals(ImportTypes.MSTest.name()) || format.equals(ImportTypes.Cucumber.name())){
130139
if (suiteName == null){
131-
throw new InvalidParameterException("Suite parameter is missed.");
140+
throw new AqualityQueryParameterException("Suite parameter is missed.");
132141
}
133142
}
134143
}

0 commit comments

Comments
 (0)