Skip to content

Commit ec06217

Browse files
Merge pull request #43 from aquality-automation/develop
Develop
2 parents f21a410 + 9338b89 commit ec06217

25 files changed

+647
-62
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# CHANGELOG
22

3+
## 0.3.5 (2020-02-15)
4+
5+
Features:
6+
- Milestone View: Add functionality that displays the latest results of the tests from the test runs -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/11)
7+
- List of predefined Resolutions -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/26)
8+
- Import: Mark import as debug -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/47)
9+
- Add JUnit 5 support -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/33)
10+
11+
Bugfixes:
12+
- Add ALLOW_UNQUOTED_CONTROL_CHARS for mapper -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/45)
13+
- Cannot remove milestone from TestRun -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/50)
14+
315
## 0.3.4 (2019-12-10)
416

517
Features:

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<groupId>unifi_reporting_api</groupId>
77
<artifactId>api</artifactId>
88
<packaging>war</packaging>
9-
<version>0.3.4</version>
9+
<version>0.3.5</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/java/main/controllers/ControllerFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,7 @@ public StepResultController getHandler(StepResultDto entity) {
7070
public StepTypeController getHandler(StepTypeDto entity) {
7171
return new StepTypeController(user);
7272
}
73+
public PredefinedResolutionController getHandler(PredefinedResolutionDto entity) {
74+
return new PredefinedResolutionController(user);
75+
}
7376
}

src/main/java/main/controllers/Project/MilestoneController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public List<MilestoneDto> get(MilestoneDto template) throws AqualityException {
3737

3838
@Override
3939
public boolean delete(MilestoneDto template) throws AqualityException {
40-
if(baseUser.isManager() || baseUser.getProjectUser(template.getProject_id()).isEditor()){
40+
if(baseUser.isManager() || baseUser.getProjectUserByMilestoneId(template.getId()).isEditor()){
4141
return milestoneDao.delete(template);
4242
}else{
4343
throw new AqualityPermissionsException("Account is not allowed to delete Milestones", baseUser);
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package main.controllers.Project;
2+
3+
import main.controllers.BaseController;
4+
import main.exceptions.AqualityException;
5+
import main.exceptions.AqualityPermissionsException;
6+
import main.model.db.dao.project.PredefinedResolutionDao;
7+
import main.model.dto.*;
8+
9+
import java.util.List;
10+
11+
public class PredefinedResolutionController extends BaseController<PredefinedResolutionDto> {
12+
private PredefinedResolutionDao predefinedResolutionDao;
13+
private ProjectUserController projectUserController;
14+
private ResultResolutionController resultResolutionController;
15+
16+
public PredefinedResolutionController(UserDto user) {
17+
super(user);
18+
predefinedResolutionDao = new PredefinedResolutionDao();
19+
projectUserController = new ProjectUserController(user);
20+
resultResolutionController = new ResultResolutionController(user);
21+
}
22+
23+
@Override
24+
public List<PredefinedResolutionDto> get(PredefinedResolutionDto entity) throws AqualityException {
25+
if (baseUser.isManager() || baseUser.getProjectUser(entity.getProject_id()).isEditor()) {
26+
return fillPredefinedResolutions(predefinedResolutionDao.searchAll(entity));
27+
} else {
28+
throw new AqualityPermissionsException("Account is not allowed to get Predefined Resolutions", baseUser);
29+
}
30+
}
31+
32+
@Override
33+
public PredefinedResolutionDto create(PredefinedResolutionDto entity) throws AqualityException {
34+
if (baseUser.isManager() || baseUser.getProjectUser(entity.getProject_id()).isEditor()) {
35+
return predefinedResolutionDao.create(entity);
36+
} else {
37+
throw new AqualityPermissionsException("Account is not allowed to create Predefined Resolutions", baseUser);
38+
}
39+
}
40+
41+
@Override
42+
public boolean delete(PredefinedResolutionDto entity) throws AqualityException {
43+
if (baseUser.isManager() || baseUser.getProjectUser(entity.getProject_id()).isEditor()) {
44+
return predefinedResolutionDao.delete(entity);
45+
} else {
46+
throw new AqualityPermissionsException("Account is not allowed to delete Predefined Resolutions", baseUser);
47+
}
48+
}
49+
50+
private List<PredefinedResolutionDto> fillPredefinedResolutions(List<PredefinedResolutionDto> p_resolutions) throws AqualityException {
51+
if (p_resolutions.size() > 0) {
52+
List<ResultResolutionDto> resolutions = resultResolutionController.get(new ResultResolutionDto());
53+
54+
ProjectUserDto projectUserDto = new ProjectUserDto();
55+
projectUserDto.setProject_id(p_resolutions.get(0).getProject_id());
56+
List<ProjectUserDto> projectUsers = projectUserController.get(projectUserDto);
57+
58+
for (PredefinedResolutionDto p_resolution : p_resolutions) {
59+
fillPredefinedResolution(p_resolution, resolutions, projectUsers);
60+
}
61+
}
62+
63+
return p_resolutions;
64+
}
65+
66+
private void fillPredefinedResolution(PredefinedResolutionDto p_resolution, List<ResultResolutionDto> resolutions, List<ProjectUserDto> users) {
67+
resolutions.stream().filter(x -> x.getId().equals(p_resolution.getResolution_id())).findFirst().ifPresent(p_resolution::setResolution);
68+
if (p_resolution.getAssignee() != null) {
69+
users.stream().filter(user -> user.getUser_id().equals(p_resolution.getAssignee())).findFirst()
70+
.ifPresent(projectUser -> p_resolution.setAssigned_user(projectUser.getUser()));
71+
}
72+
}
73+
}

src/main/java/main/controllers/Project/ProjectUserController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public ProjectUserDto create(ProjectUserDto template) throws AqualityException {
3131

3232
@Override
3333
public List<ProjectUserDto> get(ProjectUserDto template) throws AqualityException {
34-
if(baseUser.isFromGlobalManagement() || baseUser.getProjectUser(template.getProject_id()).isViewer()){
34+
if(baseUser.isFromGlobalManagement() || baseUser.getProjectUser(template.getProject_id()).isViewer() || template.getUser_id() != null){
3535
return fillProjectUsers(projectUserDao.searchAll(template));
3636
}else{
3737
throw new AqualityPermissionsException("Account is not allowed to view Project Users", baseUser);

src/main/java/main/controllers/Project/ResultController.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ public boolean delete(TestResultDto template) throws AqualityException {
6969
}
7070
}
7171

72+
public List<TestResultDto> getLatestResultsByMilestone(Integer milestoneId) throws AqualityException {
73+
if(baseUser.isFromGlobalManagement() || baseUser.getProjectUserByMilestoneId(milestoneId).isViewer()){
74+
return fillResults(testResultDao.selectLatestResultsByMilestone(milestoneId));
75+
}else{
76+
throw new AqualityPermissionsException("Account is not allowed to view Test Results", baseUser);
77+
}
78+
}
79+
7280
public boolean updateMultipleTestResults(List<TestResultDto> entities) throws AqualityException {
7381
if(entities.size() > 0 && (baseUser.isManager() || baseUser.getProjectUser(entities.get(0).getProject_id()).isEditor())){
7482
return testResultDao.updateMultiply(entities);
@@ -107,27 +115,32 @@ private List<TestResultDto> fillResults(List<TestResultDto> results) throws Aqua
107115
if(results.size() > 0){
108116
List<FinalResultDto> finalResults = finalResultController.get(new FinalResultDto());
109117
List<ResultResolutionDto> resolutions = resultResolutionController.get(new ResultResolutionDto());
118+
110119
TestDto testTemplate = new TestDto();
111120
testTemplate.setProject_id(results.get(0).getProject_id());
112121
List<TestDto> tests = testDao.searchAll(testTemplate);
113122

123+
ProjectUserDto projectUserDto = new ProjectUserDto();
124+
projectUserDto.setProject_id(results.get(0).getProject_id());
125+
List<ProjectUserDto> projectUsers = projectUserController.get(projectUserDto);
126+
114127
for (TestResultDto result: results){
115-
fillResult(result, finalResults, resolutions, tests);
128+
fillResult(result, finalResults, resolutions, tests, projectUsers);
116129
}
117130
}
118131

119132
return results;
120133
}
121134

122-
private void fillResult(TestResultDto result, List<FinalResultDto> finalResults, List<ResultResolutionDto> resolutions, List<TestDto> tests) throws AqualityException {
135+
private void fillResult(TestResultDto result, List<FinalResultDto> finalResults, List<ResultResolutionDto> resolutions, List<TestDto> tests, List<ProjectUserDto> projectUsers) throws AqualityException {
123136
if (projectController.isStepsEnabled(result.getProject_id())) {
124137
fillResultSteps(result);
125138
}
126139

127140
result.setFinal_result(finalResults.stream().filter(x -> x.getId().equals(result.getFinal_result_id())).findFirst().orElse(null));
128141
result.setTest(tests.stream().filter(x -> x.getId().equals(result.getTest_id())).findFirst().orElse(null));
129142
result.setTest_resolution(resolutions.stream().filter(x -> x.getId().equals(result.getTest_resolution_id())).findFirst().orElse(null));
130-
fillResultAssignee(result);
143+
fillResultAssignee(result, projectUsers);
131144
}
132145

133146
private void fillResultSteps(TestResultDto result) throws AqualityException {
@@ -137,12 +150,10 @@ private void fillResultSteps(TestResultDto result) throws AqualityException {
137150
result.setSteps(stepResultController.get(stepResultTemplate));
138151
}
139152

140-
private void fillResultAssignee(TestResultDto result) throws AqualityException {
153+
private void fillResultAssignee(TestResultDto result, List<ProjectUserDto> projectUsers) throws AqualityException {
141154
if (result.getAssignee() != null) {
142-
ProjectUserDto projectUserDto = new ProjectUserDto();
143-
projectUserDto.setUser_id(result.getAssignee());
144-
projectUserDto.setProject_id(result.getProject_id());
145-
result.setAssigned_user(projectUserController.get(projectUserDto).get(0));
155+
ProjectUserDto projectUser = projectUsers.stream().filter(user -> user.getUser_id().equals(result.getAssignee())).findFirst().orElse(null);
156+
result.setAssigned_user(projectUser);
146157
}
147158
}
148159

src/main/java/main/controllers/Project/TestController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public TestDto create(TestDto template) throws AqualityException {
4646
}
4747

4848
public List<TestDto> get(TestDto template, boolean withChildren) throws AqualityException {
49-
if(baseUser.isFromGlobalManagement() || baseUser.getProjectUser(template.getProject_id()).isViewer()){
49+
if(baseUser.isFromGlobalManagement() || baseUser.getProjectUserByTest(template).isViewer()){
5050
return fillTests(testDao.searchAll(template), withChildren);
5151
}else{
52-
throw new AqualityPermissionsException("Account is not allowed to view Milestones", baseUser);
52+
throw new AqualityPermissionsException("Account is not allowed to view Tests", baseUser);
5353
}
5454
}
5555

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main.model.db.dao.project;
2+
3+
import main.model.db.dao.DAO;
4+
import main.model.dto.PredefinedResolutionDto;
5+
6+
public class PredefinedResolutionDao extends DAO<PredefinedResolutionDto> {
7+
public PredefinedResolutionDao() {
8+
super(PredefinedResolutionDto.class);
9+
select = "{call SELECT_PREDEFINED_RESOLUTION(?,?)}";
10+
insert = "{call INSERT_PREDEFINED_RESOLUTION(?,?,?,?,?,?)}";
11+
remove = "{call REMOVE_PREDEFINED_RESOLUTION(?)}";
12+
}
13+
}

src/main/java/main/model/db/dao/project/TestResultDao.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public TestResultDao() {
1919

2020

2121
private String syncSuiteQuery = "{call SELECT_LEGACY_RESULTS(?,?)}";
22+
private String latestResultsByMilestone = "{call SELECT_LATEST_RESULTS_BY_MILESTONE(?)}";
2223

2324
/**
2425
* @param suiteId suite id for search
@@ -32,4 +33,10 @@ public List<TestResultDto> selectSuiteLegacyResults(@NotNull Integer suiteId, @N
3233
parameters.add(new ConnectionUrlParser.Pair<>("request_test_id", testId.toString()));
3334
return dtoMapper.mapObjects(CallStoredProcedure(syncSuiteQuery, parameters).toString());
3435
}
36+
37+
public List<TestResultDto> selectLatestResultsByMilestone(@NotNull Integer milestoneId) throws AqualityException {
38+
List<ConnectionUrlParser.Pair<String, String>> parameters = new ArrayList<>();
39+
parameters.add(new ConnectionUrlParser.Pair<>("request_milestone_id", milestoneId.toString()));
40+
return dtoMapper.mapObjects(CallStoredProcedure(latestResultsByMilestone, parameters).toString());
41+
}
3542
}

0 commit comments

Comments
 (0)