Skip to content

Commit 85e6968

Browse files
sync test feature
1 parent db540ae commit 85e6968

File tree

4 files changed

+116
-9
lines changed

4 files changed

+116
-9
lines changed

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

Lines changed: 67 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,28 @@
33
import main.controllers.BaseController;
44
import main.exceptions.AqualityException;
55
import main.exceptions.AqualityPermissionsException;
6-
import main.model.db.dao.project.SuiteStatisticDao;
7-
import main.model.db.dao.project.TestSuiteDao;
8-
import main.model.dto.SuiteStatisticDto;
9-
import main.model.dto.TestDto;
10-
import main.model.dto.TestSuiteDto;
11-
import main.model.dto.UserDto;
6+
import main.model.db.dao.project.*;
7+
import main.model.dto.*;
8+
import main.view.Project.TestResult;
129

1310
import java.util.List;
11+
import java.util.stream.Collectors;
1412

1513
public class SuiteController extends BaseController<TestSuiteDto> {
1614
private TestSuiteDao testSuiteDao;
15+
private TestRunDao testRunDao;
16+
private Test2SuiteDao test2SuiteDao;
17+
private TestResultDao testResultDao;
1718
private SuiteStatisticDao suiteStatisticDao;
1819
private TestController testController;
1920

2021
public SuiteController(UserDto user) {
2122
super(user);
2223
testSuiteDao = new TestSuiteDao();
24+
testRunDao = new TestRunDao();
25+
testResultDao = new TestResultDao();
2326
suiteStatisticDao = new SuiteStatisticDao();
27+
test2SuiteDao = new Test2SuiteDao();
2428
testController = new TestController(user);
2529
}
2630

@@ -86,4 +90,61 @@ private List<TestSuiteDto> fillTestSuites(List<TestSuiteDto> testSuites, boolean
8690
}
8791
return testSuites;
8892
}
93+
94+
public void syncLegacyTests(TestSuiteDto template, Integer notExecutedFor, boolean removeNotExecutedResults) throws AqualityException {
95+
if(baseUser.isManager() || baseUser.getProjectUserBySuiteId(template.getId()).isManager()){
96+
TestRunDto testRunTemplate = new TestRunDto();
97+
testRunTemplate.setTest_suite_id(template.getId());
98+
testRunTemplate.setLimit(notExecutedFor);
99+
List<TestRunDto> testRuns = testRunDao.searchAll(testRunTemplate);
100+
List<TestDto> legacyTests = getLegacyTests(testRuns, template.getId());
101+
legacyTests.forEach(test -> {
102+
Test2SuiteDto test2Suite = new Test2SuiteDto();
103+
test2Suite.setTest_id(test.getId());
104+
test2Suite.setSuite_id(template.getId());
105+
try {
106+
test2SuiteDao.delete(test2Suite);
107+
if(removeNotExecutedResults) {
108+
removePendingResultsForTest(test);
109+
}
110+
} catch (AqualityException e) {
111+
e.printStackTrace();
112+
}
113+
});
114+
}else{
115+
throw new AqualityPermissionsException("Account is not allowed to Sync Test Suite", baseUser);
116+
}
117+
}
118+
119+
private void removePendingResultsForTest(TestDto test) throws AqualityException {
120+
TestResultDto testResultTemplate = new TestResultDto();
121+
testResultTemplate.setTest_id(test.getId());
122+
testResultTemplate.setFinal_result_id(3);
123+
testResultTemplate.setTest_resolution_id(1);
124+
List<TestResultDto> testResults = testResultDao.searchAll(testResultTemplate);
125+
testResults.forEach(testResult -> {
126+
try {
127+
testResultDao.delete(testResult);
128+
} catch (AqualityException e) {
129+
e.printStackTrace();
130+
}
131+
});
132+
}
133+
134+
private List<TestDto> getLegacyTests(List<TestRunDto> testRuns, Integer suiteId) throws AqualityException {
135+
TestDto testTemplate = new TestDto();
136+
testTemplate.setTest_suite_id(suiteId);
137+
List<TestDto> tests = testController.get(testTemplate);
138+
for (TestRunDto testRun : testRuns) {
139+
TestResultDto testResultTemplate = new TestResultDto();
140+
testResultTemplate.setTest_run_id(testRun.getId());
141+
List<TestResultDto> testResults = testResultDao.searchAll(testResultTemplate);
142+
tests = tests.stream().filter(test -> {
143+
TestResultDto currentResult = testResults.stream().filter(result -> result.getTest_id().equals(test.getId())).findFirst().orElse(null);
144+
return currentResult == null || currentResult.getFinal_result_id() == 3;
145+
}).collect(Collectors.toList());
146+
}
147+
148+
return tests;
149+
}
89150
}

src/main/java/main/controllers/Project/Test2SuiteController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ public List<Test2SuiteDto> get(Test2SuiteDto template) throws AqualityException
4343
return test2SuiteDao.searchAll(template);
4444
}
4545

46-
//TODO Refactoring
47-
public List<TestSuiteDto> convertToSuites(List<Test2SuiteDto> test2Suites, List<TestSuiteDto> suites) throws AqualityException {
46+
List<TestSuiteDto> convertToSuites(List<Test2SuiteDto> test2Suites, List<TestSuiteDto> suites) {
4847
return test2Suites.stream().map(test2suite
4948
-> suites.stream().filter(x -> x.getId().equals(test2suite.getSuite_id())).findFirst().orElse(null)).collect(Collectors.toList());
5049
}

src/main/java/main/model/dto/BaseDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public List<Pair<String, String>> getSearchParameters() throws AqualityException
4343
if(nameAnnotation != null && searchAnnotation != null){
4444
field.setAccessible(true);
4545
String value = getStringValue(field.get(this));
46-
if(nameAnnotation.name().equals("request_limit") && value.equals("0")){
46+
if(nameAnnotation.name().equals("request_limit") && (value.equals("0") || value.equals(""))){
4747
value = "100000";
4848
}
4949
Pair<String, String> pair = new Pair<>(nameAnnotation.name(), value);
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main.view.Project;
2+
3+
4+
import main.Session;
5+
import main.exceptions.AqualityException;
6+
import main.model.dto.TestSuiteDto;
7+
import main.view.BaseServlet;
8+
import main.view.IDelete;
9+
import main.view.IGet;
10+
import main.view.IPost;
11+
12+
import javax.servlet.annotation.WebServlet;
13+
import javax.servlet.http.HttpServletRequest;
14+
import javax.servlet.http.HttpServletResponse;
15+
import java.util.List;
16+
17+
@WebServlet("/suite/sync")
18+
public class SyncSuiteServlet extends BaseServlet implements IGet {
19+
20+
@Override
21+
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
22+
setPostResponseHeaders(resp);
23+
setEncoding(resp);
24+
25+
try {
26+
Integer notExecutedFor;
27+
boolean removeNotExecutedResults;
28+
Session session = createSession(req);
29+
if(!req.getParameterMap().containsKey("notExecutedFor")){
30+
throw new AqualityException("notExecutedFor is required parameter for Sync Suite");
31+
}
32+
notExecutedFor = getIntegerQueryParameter(req,"notExecutedFor");
33+
removeNotExecutedResults = getBooleanQueryParameter(req, "removeNotExecutedResults");
34+
TestSuiteDto testSuite = new TestSuiteDto();
35+
testSuite.getSearchTemplateFromRequestParameters(req);
36+
session.controllerFactory.getHandler(testSuite).syncLegacyTests(testSuite, notExecutedFor, removeNotExecutedResults);
37+
setJSONContentType(resp);
38+
}catch (Exception e) {
39+
handleException(resp, e);
40+
}
41+
}
42+
43+
@Override
44+
public void doOptions(HttpServletRequest req, HttpServletResponse resp) {
45+
setOptionsResponseHeaders(resp);
46+
}
47+
}

0 commit comments

Comments
 (0)