Skip to content

Commit 5b18c04

Browse files
Merge pull request #60 from aquality-automation/feature/dao-unit-tests
Feature/unit tests for dao
2 parents 9f6a114 + 7482a8d commit 5b18c04

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+771
-146
lines changed

CHANGELOG.md

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

3+
## 0.3.9 (Unreleased)
4+
5+
Features:
6+
- Added unit tests for checking DAO's -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/80)
7+
38
## 0.3.8 (2020-03-11)
49

510
Features:

src/main/java/main/model/db/dao/DAO.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public List<T> getAll() throws AqualityException {
7878
*/
7979
public List<T> searchAll(T entity) throws AqualityException {
8080
List<Pair<String, String>> parameters = entity.getSearchParameters();
81+
checkSelectProcedure();
8182
return dtoMapper.mapObjects(CallStoredProcedure(select, parameters).toString());
8283
}
8384

@@ -95,6 +96,7 @@ public T getEntityById(Integer id) throws AqualityException {
9596
}
9697

9798
List<Pair<String, String>> parameters = entity.getIdSearchParameters(id);
99+
checkSelectProcedure();
98100
List<T> all = dtoMapper.mapObjects(CallStoredProcedure(select, parameters).toString());
99101

100102
return getSingleResult(all, id);
@@ -107,6 +109,7 @@ public T getEntityById(Integer id) throws AqualityException {
107109
*/
108110
public T getEntityById(T entity) throws AqualityException {
109111
List<Pair<String, String>> parameters = entity.getIdAndProjectIdSearchParameters();
112+
checkSelectProcedure();
110113
List<T> all = dtoMapper.mapObjects(CallStoredProcedure(select, parameters).toString());
111114

112115
return getSingleResult(all, entity.getIdOrOverrideId());
@@ -129,6 +132,7 @@ public T update(T entity) throws AqualityException {
129132
}
130133

131134
List<Pair<String, String>> parameters = entity.getParameters();
135+
checkInsertProcedure();
132136
List<T> results = dtoMapper.mapObjects(CallStoredProcedure(insert, parameters).toString());
133137
if (!results.isEmpty()) {
134138
return results.get(0);
@@ -144,7 +148,7 @@ public T update(T entity) throws AqualityException {
144148
*/
145149
public boolean delete(T entity) throws AqualityException {
146150
List<Pair<String, String>> parameters = entity.getDataBaseIDParameters();
147-
151+
checkRemoveProcedure();
148152
CallStoredProcedure(remove, parameters);
149153
return true;
150154
}
@@ -164,6 +168,7 @@ public T create(T entity) throws AqualityException {
164168

165169
if(id == null){
166170
List<Pair<String, String>> parameters = entity.getParameters();
171+
checkInsertProcedure();
167172
List<T> results = dtoMapper.mapObjects(CallStoredProcedure(insert, parameters).toString());
168173
if(!results.isEmpty()){
169174
return results.get(0);
@@ -330,4 +335,22 @@ private boolean areParametersEmpty(List<Pair<String, String>> parameters) {
330335

331336
return true;
332337
}
338+
339+
protected void checkSelectProcedure() throws AqualityException {
340+
checkProcedure(select, "SELECT");
341+
}
342+
343+
protected void checkInsertProcedure() throws AqualityException {
344+
checkProcedure(insert, "INSERT");
345+
}
346+
347+
protected void checkRemoveProcedure() throws AqualityException {
348+
checkProcedure(remove, "REMOVE");
349+
}
350+
351+
private void checkProcedure(String sql, String sqlName) throws AqualityException {
352+
if(sql == null){
353+
throw new AqualityException(String.format("SQL procedure '%s' is not define for DAO '%s'", sqlName, getClass()));
354+
}
355+
}
333356
}

src/main/java/main/model/db/dao/audit/AuditorsDao.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public AuditorsDao() {
1919
@Override
2020
public List<AuditorDto> searchAll(AuditorDto entity) throws AqualityException {
2121
List<Pair<String, String>> parameters = entity.getSearchParameters();
22+
checkSelectProcedure();
2223
List<AuditorDto> auditors = dtoMapper.mapObjects(CallStoredProcedure(select, parameters).toString());
2324
auditors.forEach(UserDto::toPublic);
2425
return auditors;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public APITokenDto create(APITokenDto entity) throws AqualityException {
2424
String token = generateToken();
2525
entity.setApi_token(DigestUtils.md5Hex(token + "advbc1671-nlksdui-ff"));
2626
List<Pair<String, String>> parameters = entity.getParameters();
27-
27+
checkInsertProcedure();
2828
CallStoredProcedure(insert, parameters);
2929
entity.setApi_token(token);
3030
return entity;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public Step2TestDao() {
2424
*/
2525
public Step2TestDto create(Step2TestDto entity) throws AqualityException {
2626
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getParameters();
27+
checkInsertProcedure();
2728
CallStoredProcedure(insert, parameters);
2829
return entity;
2930
}
@@ -35,6 +36,7 @@ public Step2TestDto create(Step2TestDto entity) throws AqualityException {
3536
*/
3637
public List<StepDto> getTestSteps(Step2TestDto entity) throws AqualityException {
3738
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getSearchParameters();
39+
checkSelectProcedure();
3840
List<StepDto> results = new DtoMapper<>(StepDto.class).mapObjects(CallStoredProcedure(select, parameters).toString());
3941
return results;
4042
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ public StepResultDao() {
88
super(StepResultDto.class);
99
select = "{call SELECT_STEP_RESULT(?,?,?)}";
1010
insert = "{call INSERT_STEP_RESULT(?,?,?,?,?,?,?,?,?,?,?,?)}";
11-
remove = "{call REMOVE_STEP_RESULT(?)}";
1211
}
1312
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package tests.workers.dao;
2+
3+
import main.exceptions.AqualityException;
4+
5+
public interface IDaoTest {
6+
7+
void searchAllTest() throws AqualityException;
8+
9+
void insertTest() throws AqualityException;
10+
11+
void removeTest() throws AqualityException;
12+
}

src/test/java/tests/workers/audits/AuditAttachmentsDaoTest.java renamed to src/test/java/tests/workers/dao/audits/AuditAttachmentsDaoTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tests.workers.audits;
1+
package tests.workers.dao.audits;
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.mysql.cj.core.conf.url.ConnectionUrlParser.Pair;
@@ -9,21 +9,22 @@
99
import org.json.JSONException;
1010
import org.testng.annotations.BeforeMethod;
1111
import org.testng.annotations.Test;
12+
import tests.workers.dao.IDaoTest;
1213

1314
import java.util.ArrayList;
1415
import java.util.List;
1516

1617
import static org.testng.Assert.assertEquals;
1718
import static utils.Validations.assertSQLToParams;
1819

19-
public class AuditAttachmentsDaoTest extends AuditAttachmentsDao {
20+
public class AuditAttachmentsDaoTest extends AuditAttachmentsDao implements IDaoTest {
2021

2122
private String currentSql;
2223
private List<Pair<String, String>> currentParameters;
2324
private List<AuditAttachmentDto> resultList;
2425

2526
@BeforeMethod
26-
public void cleanUpResults(){
27+
public void cleanUpResults() {
2728
resultList = new ArrayList<>();
2829
}
2930

@@ -50,7 +51,7 @@ public void removeTest() throws AqualityException {
5051
}
5152

5253
@Override
53-
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters){
54+
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters) {
5455
currentSql = sql;
5556
currentParameters = parameters;
5657
try {

src/test/java/tests/workers/audits/AuditCommentsDaoTest.java renamed to src/test/java/tests/workers/dao/audits/AuditCommentsDaoTest.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tests.workers.audits;
1+
package tests.workers.dao.audits;
22

33
import com.mysql.cj.core.conf.url.ConnectionUrlParser.Pair;
44
import main.exceptions.AqualityException;
@@ -8,6 +8,7 @@
88
import org.json.JSONException;
99
import org.testng.annotations.BeforeMethod;
1010
import org.testng.annotations.Test;
11+
import tests.workers.dao.IDaoTest;
1112

1213
import java.util.ArrayList;
1314
import java.util.List;
@@ -16,14 +17,14 @@
1617
import static utils.FileUtils.getResourceFileAsString;
1718
import static utils.Validations.assertSQLToParams;
1819

19-
public class AuditCommentsDaoTest extends AuditCommentsDao {
20+
public class AuditCommentsDaoTest extends AuditCommentsDao implements IDaoTest {
2021

2122
private String currentSql;
2223
private List<Pair<String, String>> currentParameters;
2324
private List<AuditCommentDto> resultList;
2425

2526
@BeforeMethod
26-
public void cleanUpResults(){
27+
public void cleanUpResults() {
2728
resultList = new ArrayList<>();
2829
}
2930

@@ -41,14 +42,18 @@ public void insertTest() throws AqualityException {
4142
assertSQLToParams(currentSql, currentParameters);
4243
}
4344

45+
@Test(expectedExceptions = AqualityException.class, expectedExceptionsMessageRegExp = "SQL procedure 'REMOVE' is not define for DAO.+AuditCommentsDao.+")
46+
public void removeTest() throws AqualityException {
47+
delete(new AuditCommentDto());
48+
}
4449

4550
@Override
46-
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters){
51+
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters) {
4752
currentSql = sql;
4853
currentParameters = parameters;
4954
try {
5055
return new JSONArray(getResourceFileAsString("entities/auditComments.json"));
51-
} catch ( JSONException e) {
56+
} catch (JSONException e) {
5257
e.printStackTrace();
5358
}
5459
return new JSONArray();

src/test/java/tests/workers/audits/AuditDaoTest.java renamed to src/test/java/tests/workers/dao/audits/AuditDaoTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tests.workers.audits;
1+
package tests.workers.dao.audits;
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.mysql.cj.core.conf.url.ConnectionUrlParser.Pair;
@@ -9,21 +9,22 @@
99
import org.json.JSONException;
1010
import org.testng.annotations.BeforeMethod;
1111
import org.testng.annotations.Test;
12+
import tests.workers.dao.IDaoTest;
1213

1314
import java.util.ArrayList;
1415
import java.util.List;
1516

1617
import static org.testng.Assert.assertEquals;
1718
import static utils.Validations.assertSQLToParams;
1819

19-
public class AuditDaoTest extends AuditDao {
20+
public class AuditDaoTest extends AuditDao implements IDaoTest {
2021

2122
private String currentSql;
2223
private List<Pair<String, String>> currentParameters;
2324
private List<AuditDto> resultList;
2425

2526
@BeforeMethod
26-
public void cleanUpResults(){
27+
public void cleanUpResults() {
2728
resultList = new ArrayList<>();
2829
}
2930

@@ -50,7 +51,7 @@ public void removeTest() throws AqualityException {
5051
}
5152

5253
@Override
53-
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters){
54+
protected JSONArray CallStoredProcedure(String sql, List<Pair<String, String>> parameters) {
5455
currentSql = sql;
5556
currentParameters = parameters;
5657
try {

0 commit comments

Comments
 (0)