Skip to content

Commit cba6e40

Browse files
Fix issue
Add tests Add changelog
1 parent 87dc9a8 commit cba6e40

File tree

11 files changed

+95
-11
lines changed

11 files changed

+95
-11
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/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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ 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+
testRun = controllerFactory.getHandler(template).get(template, false, 1).get(0);
8487
}
8588
else{
8689
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: 16 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;
@@ -28,9 +29,11 @@ public class NUnitV3Handler extends Handler {
2829
private Boolean isReasonStarted = false;
2930
private Boolean isTestCaseStarted = false;
3031
private Integer assertionNumber = 0;
32+
private TestNameNodeType testNameNodeType;
3133

32-
public NUnitV3Handler() throws AqualityException {
34+
public NUnitV3Handler(TestNameNodeType testNameNodeType) throws AqualityException {
3335
super();
36+
this.testNameNodeType = testNameNodeType;
3437
result.setFail_reason("$blank");
3538
}
3639

@@ -59,13 +62,13 @@ public void startElement(String uri, String localName, String qName, Attributes
5962
testRun.setAuthor(String.format("%s\\%s", attributes.getValue("user-domain"), attributes.getValue("user")));
6063
break;
6164
case "test-suite":
62-
if(attributes.getValue("type").equals("TestFixture")) {
65+
if(attributes.getValue("type").equals("TestFixture") && testNameNodeType == TestNameNodeType.featureNameTestName) {
6366
currentFixture = attributes.getValue("name");
6467
}
6568
break;
6669
case "test-case":
6770
isTestCaseStarted = true;
68-
test.setName(String.format("%s: %s", currentFixture, attributes.getValue("name")) );
71+
setTestName(attributes);
6972
try {
7073
result.setStart_date(convertToDate(attributes.getValue("start-time")));
7174
result.setFinish_date(convertToDate(attributes.getValue("end-time")));
@@ -166,6 +169,16 @@ public void characters(char[] ch, int start, int length) {
166169
}
167170
}
168171

172+
private void setTestName(Attributes attributes) throws SAXException {
173+
if(testNameNodeType == TestNameNodeType.featureNameTestName) {
174+
test.setName(String.format("%s: %s", currentFixture, attributes.getValue("name")) );
175+
}
176+
else if(testNameNodeType == TestNameNodeType.className) {
177+
test.setName(attributes.getValue("fullname"));
178+
} else {
179+
throw new SAXException("testNameNodeType is not correct for NUnitV3 parser.");
180+
}
181+
}
169182

170183
private Date convertToDate(String dateString) throws ParseException {
171184
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+
}

src/test/java/tests/workers/imports/NUnitHandlerTest.java renamed to src/test/java/tests/workers/imports/FeatureTestNameNUnitHandlerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import main.model.db.imports.ImportHandlers.NUnitV3;
5+
import main.model.db.imports.TestNameNodeType;
56
import main.model.dto.*;
67
import org.testng.annotations.BeforeMethod;
78
import org.testng.annotations.Test;
@@ -12,14 +13,14 @@
1213

1314
import java.util.List;
1415

15-
public class NUnitHandlerTest{
16+
public class FeatureTestNameNUnitHandlerTest {
1617
private NUnitV3 nUnitV3;
1718
private DtoMapperGeneral mapper = new DtoMapperGeneral();
1819

1920
@BeforeMethod
2021
public void tryParse(){
2122
try {
22-
nUnitV3 = new NUnitV3(FileUtils.getResourceFile("reports/Nunit3/Nunit3.xml"));
23+
nUnitV3 = new NUnitV3(FileUtils.getResourceFile("reports/Nunit3/Nunit3.xml"), TestNameNodeType.featureNameTestName);
2324
} catch (Exception e){
2425
assertNull(e, String.format("Failed on Handler Creating: %s", e.getMessage()));
2526
}

0 commit comments

Comments
 (0)