Skip to content

Commit a7b6ee5

Browse files
HAckathon commit
1 parent 5601e2f commit a7b6ee5

15 files changed

+525
-150
lines changed

server/src/main/java/com/testsigma/controller/ReportsController.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
import com.testsigma.exception.TestsigmaDatabaseException;
1717
import com.testsigma.exception.TestsigmaException;
1818
import com.testsigma.mapper.ElementMapper;
19+
import com.testsigma.mapper.ReportsMapper;
1920
import com.testsigma.model.*;
2021
import com.testsigma.service.*;
2122
import com.testsigma.specification.ElementSpecificationsBuilder;
23+
import com.testsigma.specification.ReportsSpecificationBuilder;
2224
import com.testsigma.specification.SearchCriteria;
2325
import com.testsigma.specification.SearchOperation;
2426
import com.testsigma.web.request.ElementRequest;
@@ -53,6 +55,8 @@
5355
public class ReportsController {
5456
private final ReportsService reportsService;
5557

58+
private final ReportsMapper reportsMapper;
59+
5660
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
5761
public ResponseEntity<Object> show(@PathVariable("id") Long id) throws TestsigmaException,Exception {
5862
JSONArray responseObject = reportsService.getReport(id);
@@ -97,4 +101,14 @@ public ResponseEntity<Object> update(@RequestBody String query) throws Testsigma
97101
return new ResponseEntity<>(entities, HttpStatus.OK);
98102
}
99103

104+
@RequestMapping(method = RequestMethod.GET)
105+
public Page<ReportsDTO> index(ReportsSpecificationBuilder builder,
106+
@PageableDefault(value = 25, page = 0) Pageable pageable) {
107+
log.debug("GET /reports");
108+
Specification<Report> spec = builder.build();
109+
Page<Report> reports = reportsService.findAll(spec, pageable);
110+
List<ReportsDTO> testCaseDTOS = reportsMapper.mapDTOs(reports.getContent());
111+
return new PageImpl<>(testCaseDTOS, pageable, reports.getTotalElements());
112+
}
113+
100114
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.testsigma.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class ReportModuleDTO {
7+
private Long id;
8+
private String moduleName;
9+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.testsigma.dto;
2+
3+
4+
import com.testsigma.model.ReportModule;
5+
import com.testsigma.model.ReportType;
6+
import com.testsigma.model.WorkspaceVersion;
7+
import lombok.Data;
8+
9+
@Data
10+
public class ReportsDTO {
11+
private Long id;
12+
private String name;
13+
private String description;
14+
private ReportType reportType;
15+
private ReportModule reportModule;
16+
private WorkspaceVersion workspaceVersion;
17+
}
18+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
*
3+
* ****************************************************************************
4+
* * Copyright (C) 2019 Testsigma Technologies Inc.
5+
* * All rights reserved.
6+
* ****************************************************************************
7+
*
8+
*/
9+
10+
package com.testsigma.mapper;
11+
12+
import com.testsigma.dto.ReportsDTO;
13+
import com.testsigma.dto.api.APIElementDTO;
14+
import com.testsigma.dto.ElementDTO;
15+
import com.testsigma.dto.ElementNotificationDTO;
16+
import com.testsigma.dto.export.ElementCloudXMLDTO;
17+
import com.testsigma.dto.export.ElementXMLDTO;
18+
import com.testsigma.model.Element;
19+
import com.testsigma.model.ElementMetaData;
20+
import com.testsigma.model.ElementMetaDataRequest;
21+
import com.testsigma.model.Report;
22+
import com.testsigma.web.request.ElementRequest;
23+
import com.testsigma.web.request.testproject.TestProjectElementRequest;
24+
import org.mapstruct.*;
25+
26+
import java.util.List;
27+
28+
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE,
29+
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE,
30+
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
31+
public interface ReportsMapper {
32+
ReportsDTO map(Report report);
33+
34+
List<ReportsDTO> mapDTOs(List<Report> reports);
35+
}

server/src/main/java/com/testsigma/repository/ReportsRepository.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77

88
package com.testsigma.repository;
99

10-
import com.testsigma.model.Report;
11-
import com.testsigma.model.ReportType;
12-
import com.testsigma.model.Tag;
13-
import com.testsigma.model.TagType;
10+
import com.testsigma.model.*;
1411
import org.springframework.data.jpa.repository.JpaRepository;
12+
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
1513
import org.springframework.data.jpa.repository.Modifying;
1614
import org.springframework.data.jpa.repository.Query;
15+
import org.springframework.data.repository.PagingAndSortingRepository;
1716
import org.springframework.data.repository.query.Param;
1817
import org.springframework.stereotype.Repository;
1918
import org.springframework.transaction.annotation.Transactional;
@@ -22,7 +21,7 @@
2221

2322
@Repository
2423
@Transactional
25-
public interface ReportsRepository extends JpaRepository<Report, Long>{
24+
public interface ReportsRepository extends PagingAndSortingRepository<Report, Long>, JpaSpecificationExecutor<Report>, JpaRepository<Report, Long>{
2625

2726
List<Report> findAllByReportType(ReportType type);
2827
}

server/src/main/java/com/testsigma/service/ReportsService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,8 @@ public List<Map<String,Object>> getQueryReport(String query){
146146
return new ArrayList<Map<String,Object>>();
147147
}
148148
}
149+
150+
public Page<Report> findAll(Specification<Report> specification, Pageable pageable) {
151+
return reportsRepository.findAll(specification, pageable);
152+
}
149153
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.testsigma.specification;
2+
3+
import com.testsigma.model.Environment;
4+
import com.testsigma.model.Report;
5+
6+
public class ReportsSpecification extends BaseSpecification<Report> {
7+
8+
public ReportsSpecification(final SearchCriteria criteria) {
9+
super(criteria);
10+
}
11+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* *****************************************************************************
3+
* Copyright (C) 2020 Testsigma Technologies Inc.
4+
* All rights reserved.
5+
* ****************************************************************************
6+
*/
7+
8+
package com.testsigma.specification;
9+
10+
import com.testsigma.model.AddonNaturalTextAction;
11+
import com.testsigma.model.Report;
12+
import org.springframework.data.jpa.domain.Specification;
13+
14+
import java.util.ArrayList;
15+
16+
public class ReportsSpecificationBuilder extends BaseSpecificationsBuilder {
17+
18+
private Specification<Report> result;
19+
20+
public ReportsSpecificationBuilder() {
21+
super(new ArrayList<>());
22+
}
23+
24+
public Specification<Report> build() {
25+
if (params.size() == 0) {
26+
return null;
27+
}
28+
29+
result = new ReportsSpecification(params.get(0));
30+
params.forEach((searchCriteria) -> result =
31+
Specification.where(result).and(new ReportsSpecification(searchCriteria)));
32+
return result;
33+
}
34+
}
35+

ui/src/app/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {ResultsListComponent} from './components/results/list.component';
1818
import {LabEnvironmentsInfoComponent} from './components/webcomponents/lab-environments-info.component';
1919
import {RunDetailsComponent} from "./components/results/run-details.component";
2020
import {TestMachineResultDetailsComponent} from './components/results/test-machine-result-details.component';
21+
import {CustomReportsPopupComponent} from "./components/webcomponents/custom-reports-popup.component";
2122
import {SuiteResultDetailsComponent} from './components/results/suite-result-details.component';
2223
import {TestCaseResultDetailsComponent} from './components/results/test-case-result-details.component';
2324
import {TestCaseResultsComponent} from './components/webcomponents/test-case-results.component';
@@ -468,6 +469,7 @@ export function HttpLoaderFactory(httpClient: HttpClient) {
468469
ReRunDetailsComponent,
469470
ReRunIconComponent,
470471
ResultStatusLabelComponent,
472+
CustomReportsPopupComponent,
471473
ReRunTestCaseResultsComponent,
472474
ReRunTestSuiteResultsComponent,
473475
ReRunTestMachineResultsComponent,

0 commit comments

Comments
 (0)