Skip to content

Commit 5a24d66

Browse files
Merge pull request #23 from aquality-automation/develop
Develop
2 parents c11c0e2 + 2dda1c1 commit 5a24d66

File tree

12 files changed

+104
-12
lines changed

12 files changed

+104
-12
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## 0.3.2 (unreleased)
44

5+
Features:
6+
7+
- Import: NUnit V3 add possibility to import with fullname test name -> [View Issue](https://github.com/aquality-automation/aquality-tracking-ui/issues/27)
8+
59
Bugfixes:
610

711
- 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)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public TestSuiteDto get(String name, Integer projectId) throws AqualityException
5252
template.setProject_id(projectId);
5353
try{
5454
return get(template, false).get(0);
55-
} catch (Exception e) {
55+
} catch (IndexOutOfBoundsException e) {
5656
throw new AqualityException("The '%s' suite does not exist.", name);
5757
}
5858
}

src/main/java/main/exceptions/AqualitySQLException.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ private static String getErrorMessage(String sqlcode){
1717
return "You are trying to create duplicate entity.";
1818
case "42000":
1919
return "You Regular expression is not valid!";
20+
case "40001":
21+
return "You are trying to edit entity which is locked. Please retry the operation.";
2022
default:
2123
return String.format("Unknown SQL Error: %s", sqlcode);
2224
}

src/main/java/main/model/db/imports/BaseImporter.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,15 @@ void addLogToImport(String log) throws AqualityException {
8080

8181
private void createTestRun() throws AqualityException {
8282
if(testRun.getId() != null){
83-
this.testRun = controllerFactory.getHandler(testRun).get(testRun, false, 1).get(0);
83+
TestRunDto template = new TestRunDto();
84+
template.setProject_id(testRun.getProject_id());
85+
template.setId(testRun.getId());
86+
List<TestRunDto> testRuns = controllerFactory.getHandler(template).get(template, false, 1);
87+
if(testRuns.size() > 0){
88+
testRun = testRuns.get(0);
89+
} else {
90+
throw new AqualityException("Test run with %s id does not exist!", testRun.getId());
91+
}
8492
}
8593
else{
8694
createTestRun((testRun.getBuild_name() != null && !testRun.getBuild_name().equals(""))

src/main/java/main/model/db/imports/HandlerFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ Handler getHandler(File file, String type, TestNameNodeType testNameNodeType) th
2828
case NUnit_v2:
2929
return new NUnitV2(file);
3030
case NUnit_v3:
31-
return new NUnitV3(file);
31+
if(testNameNodeType == null){
32+
throw new AqualityException("testNameNode is required");
33+
}
34+
return new NUnitV3(file, testNameNodeType);
3235
default:
3336
throw new AqualityException(String.format("Import Type '%s' is not implemented", type));
3437
}

src/main/java/main/model/db/imports/ImportHandlers/NUnitV3.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import main.exceptions.AqualityException;
44
import main.model.db.imports.Handler;
55
import main.model.db.imports.SAXHandlers.NUnitV3Handler;
6+
import main.model.db.imports.TestNameNodeType;
67
import main.model.dto.TestDto;
78
import main.model.dto.TestResultDto;
89
import main.model.dto.TestRunDto;
@@ -17,8 +18,8 @@ public class NUnitV3 extends Handler {
1718

1819
private NUnitV3Handler handler;
1920

20-
public NUnitV3(File file) throws AqualityException {
21-
handler = new NUnitV3Handler();
21+
public NUnitV3(File file, TestNameNodeType testNameNodeType) throws AqualityException {
22+
handler = new NUnitV3Handler(testNameNodeType);
2223
try {
2324
this.parser.parse(file, handler);
2425
} catch (SAXException | IOException e) {

src/main/java/main/model/db/imports/SAXHandlers/NUnitV3Handler.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import main.model.db.imports.ResultStatus;
44
import main.exceptions.AqualityException;
55
import main.model.db.imports.Handler;
6+
import main.model.db.imports.TestNameNodeType;
67
import main.model.dto.*;
78
import org.xml.sax.Attributes;
89
import org.xml.sax.SAXException;
@@ -13,6 +14,7 @@
1314
import java.util.*;
1415

1516
import static main.model.db.imports.ResultStatus.*;
17+
import static main.model.db.imports.TestNameNodeType.*;
1618

1719
public class NUnitV3Handler extends Handler {
1820
private TestSuiteDto testSuite = new TestSuiteDto();
@@ -28,9 +30,11 @@ public class NUnitV3Handler extends Handler {
2830
private Boolean isReasonStarted = false;
2931
private Boolean isTestCaseStarted = false;
3032
private Integer assertionNumber = 0;
33+
private TestNameNodeType testNameNodeType;
3134

32-
public NUnitV3Handler() throws AqualityException {
35+
public NUnitV3Handler(TestNameNodeType testNameNodeType) throws AqualityException {
3336
super();
37+
this.testNameNodeType = testNameNodeType;
3438
result.setFail_reason("$blank");
3539
}
3640

@@ -59,13 +63,13 @@ public void startElement(String uri, String localName, String qName, Attributes
5963
testRun.setAuthor(String.format("%s\\%s", attributes.getValue("user-domain"), attributes.getValue("user")));
6064
break;
6165
case "test-suite":
62-
if(attributes.getValue("type").equals("TestFixture")) {
66+
if(attributes.getValue("type").equals("TestFixture") && testNameNodeType == featureNameTestName) {
6367
currentFixture = attributes.getValue("name");
6468
}
6569
break;
6670
case "test-case":
6771
isTestCaseStarted = true;
68-
test.setName(String.format("%s: %s", currentFixture, attributes.getValue("name")) );
72+
setTestName(attributes);
6973
try {
7074
result.setStart_date(convertToDate(attributes.getValue("start-time")));
7175
result.setFinish_date(convertToDate(attributes.getValue("end-time")));
@@ -166,6 +170,18 @@ public void characters(char[] ch, int start, int length) {
166170
}
167171
}
168172

173+
private void setTestName(Attributes attributes) throws SAXException {
174+
switch (testNameNodeType) {
175+
case featureNameTestName:
176+
test.setName(String.format("%s: %s", currentFixture, attributes.getValue("name")) );
177+
break;
178+
case className:
179+
test.setName(attributes.getValue("fullname"));
180+
break;
181+
default:
182+
throw new SAXException("testNameNodeType is not correct for NUnitV3 parser.");
183+
}
184+
}
169185

170186
private Date convertToDate(String dateString) throws ParseException {
171187
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

src/main/java/main/model/db/imports/TestNameNodeType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
public enum TestNameNodeType {
44
className,
55
testName,
6-
descriptionNode
6+
descriptionNode,
7+
featureNameTestName
78
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,16 @@ private TestNameNodeType getTestNameNodeType(HttpServletRequest req) {
156156
String testNameKey = getStringQueryParameter(req, ImportParams.testNameKey.name());
157157

158158
if(testNameKey == null){
159+
if(format.equals(ImportTypes.NUnit_v3.name())) {
160+
return TestNameNodeType.featureNameTestName;
161+
}
159162
return null;
160163
}
161164

162165
try {
163166
return TestNameNodeType.valueOf(testNameKey);
164167
} catch (IllegalArgumentException e) {
165-
throw new InvalidParameterException("TestNameKey parameter you provide is not correct. The correct values are:'testName', 'className', 'descriptionNode'.");
168+
throw new InvalidParameterException("TestNameKey parameter you provide is not correct. The correct values are:'testName', 'className', 'descriptionNode', 'featureNameTestName'.");
166169
}
167170
}
168171
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package tests.workers.imports;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import main.model.db.imports.ImportHandlers.NUnitV3;
5+
import main.model.db.imports.TestNameNodeType;
6+
import main.model.dto.*;
7+
import org.testng.annotations.BeforeMethod;
8+
import org.testng.annotations.Test;
9+
import utils.FileUtils;
10+
11+
import java.util.List;
12+
13+
import static org.testng.Assert.assertEquals;
14+
import static org.testng.Assert.assertNull;
15+
16+
public class ClassNameNUnitHandlerTest {
17+
private NUnitV3 nUnitV3;
18+
private DtoMapperGeneral mapper = new DtoMapperGeneral();
19+
20+
@BeforeMethod
21+
public void tryParse(){
22+
try {
23+
nUnitV3 = new NUnitV3(FileUtils.getResourceFile("reports/Nunit3/Nunit3.xml"), TestNameNodeType.className);
24+
} catch (Exception e){
25+
assertNull(e, String.format("Failed on Handler Creating: %s", e.getMessage()));
26+
}
27+
}
28+
29+
@Test
30+
public void validateTests() throws JsonProcessingException {
31+
List<TestDto> actualTests = nUnitV3.getTests();
32+
assertEquals(mapper.serialize(actualTests), FileUtils.getResourceFileAsString("reports/Nunit3/testWithClassName.json"));
33+
}
34+
35+
@Test
36+
public void validateTestSuite() throws JsonProcessingException {
37+
TestSuiteDto actualTestSuite = nUnitV3.getTestSuite();
38+
assertEquals(mapper.serialize(actualTestSuite), FileUtils.getResourceFileAsString("reports/Nunit3/suite.json"));
39+
}
40+
41+
@Test
42+
public void validateTestRun() throws JsonProcessingException {
43+
TestRunDto actualTestRun = nUnitV3.getTestRun();
44+
assertEquals(mapper.serialize(actualTestRun), FileUtils.getResourceFileAsString("reports/Nunit3/testrun.json"));
45+
}
46+
47+
@Test
48+
public void validateTestResults() throws JsonProcessingException {
49+
List<TestResultDto> actualTestResults = nUnitV3.getTestResults();
50+
assertEquals(mapper.serialize(actualTestResults), FileUtils.getResourceFileAsString("reports/Nunit3/results.json"));
51+
}
52+
}

0 commit comments

Comments
 (0)