Skip to content

Commit a6ccb67

Browse files
committed
Include closeouts in results.
1 parent a87c6f1 commit a6ccb67

File tree

2 files changed

+34
-7
lines changed

2 files changed

+34
-7
lines changed

src/main/java/org/broadinstitute/consent/http/db/DataAccessRequestDAO.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,20 @@ AND LOWER(v.type) IN ('final', 'radar_approve')) final_access_vote ON final_acce
138138
AND dar.submission_date IS NOT NULL
139139
AND final_access_vote.last_vote = TRUE
140140
AND (LOWER(dar.data->>'status') != 'archived' OR dar.data->>'status' IS NULL)
141-
-- Exclude DARs that have a closeoutSupplement
142-
AND data ->> 'closeoutSupplement' IS NULL
141+
-- Pull in all closeouts for this dataset. Closeouts do not have elections,
142+
-- but we want to include them in the dataset usage metrics.
143+
UNION
144+
SELECT dar.id, dar.reference_id, dar.collection_id, dar.parent_id, dar.user_id,
145+
dar.create_date, dar.submission_date, dar.update_date, dar.data, dar.era_commons_id,
146+
dar.approving_so_id, dar.approving_so_timestamp, dar.requires_so_approval,
147+
dar.closeout_so_approval_timestamp, dar.closeout_approving_so_id,
148+
dd.dataset_id, collection.dar_code
149+
FROM data_access_request dar
150+
LEFT JOIN dar_collection collection on collection.collection_id = dar.collection_id
151+
INNER JOIN dar_dataset dd ON dd.reference_id = dar.reference_id
152+
WHERE dd.dataset_id = :datasetId
153+
AND dar.submission_date IS NOT NULL
154+
AND data ->> 'closeoutSupplement' IS NOT NULL
143155
""")
144156
List<DataAccessRequest> findSummaryMetricApprovedDARsByDatasetIdIncludesExpired(
145157
@Bind("datasetId") Integer datasetId);

src/test/java/org/broadinstitute/consent/http/db/DataAccessRequestDAOTest.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -843,10 +843,20 @@ void testFindSummaryMetricApprovedDARsByDatasetIdIncludesExpired() {
843843
dataAccessRequestDAO.insertDARDatasetRelation(
844844
unsubmittedDAR.getReferenceId(), dataset.getDatasetId());
845845

846-
// Create a closeout DAR from the approved DAR
846+
// Create a Progress Report on the approved DAR
847+
DataAccessRequest prDAR = createDataAccessRequest(user.getUserId(), approvedCollectionId);
848+
dataAccessRequestDAO.insertDARDatasetRelation(
849+
prDAR.getReferenceId(), dataset.getDatasetId());
850+
Election prElection =
851+
createDataAccessElection(prDAR.getReferenceId(), dataset.getDatasetId());
852+
Vote prVote = createFinalVote(dataset.getCreateUserId(), prElection.getElectionId());
853+
updateVote(true, "", now, prVote.getVoteId(), false, prElection.getElectionId(), now, false);
854+
855+
// Create a closeout DAR from the PR DAR
847856
DataAccessRequest closeoutDAR =
848857
createProgressReport(
849-
user.getEraCommonsId(), user.getUserId(), approvedCollectionId, approvedDAR.getId());
858+
user.getEraCommonsId(), user.getUserId(), approvedCollectionId, prDAR.getId());
859+
dataAccessRequestDAO.insertDARDatasetRelation(closeoutDAR.getReferenceId(), dataset.getDatasetId());
850860
CloseoutSupplement closeout =
851861
new CloseoutSupplement(List.of("Reason"), "Other Reason", user.getUserId());
852862
closeoutDAR.getData().setCloseoutSupplement(closeout);
@@ -893,18 +903,23 @@ void testFindSummaryMetricApprovedDARsByDatasetIdIncludesExpired() {
893903
dataAccessRequestDAO.findSummaryMetricApprovedDARsByDatasetIdIncludesExpired(
894904
dataset.getDatasetId());
895905
assertFalse(summaryDARs.isEmpty());
906+
// Only DAR that should not be returned
907+
assertTrue(
908+
summaryDARs.stream()
909+
.noneMatch(dar -> dar.getReferenceId().equals(unsubmittedDAR.getReferenceId())));
910+
// All other DARs should be returned
896911
assertTrue(
897912
summaryDARs.stream()
898913
.anyMatch(dar -> dar.getReferenceId().equals(approvedDAR.getReferenceId())));
899914
assertTrue(
900915
summaryDARs.stream()
901-
.noneMatch(dar -> dar.getReferenceId().equals(unsubmittedDAR.getReferenceId())));
916+
.anyMatch(dar -> dar.getReferenceId().equals(prDAR.getReferenceId())));
902917
assertTrue(
903918
summaryDARs.stream()
904-
.noneMatch(dar -> dar.getReferenceId().equals(closeoutDAR.getReferenceId())));
919+
.anyMatch(dar -> dar.getReferenceId().equals(closeoutDAR.getReferenceId())));
905920
assertTrue(
906921
summaryDARs.stream().anyMatch(dar -> dar.getReferenceId().equals(expiredReferenceId)));
907-
assertEquals(2, summaryDARs.size());
922+
assertEquals(4, summaryDARs.size());
908923
}
909924

910925
// findAllDraftDataAccessRequests should exclude archived DARs

0 commit comments

Comments
 (0)