diff --git a/R/mod_review_forms.R b/R/mod_review_forms.R index 0b89ab67..f5d5d19b 100644 --- a/R/mod_review_forms.R +++ b/R/mod_review_forms.R @@ -132,8 +132,8 @@ mod_review_forms_server <- function( # it will give a warning. This would be rare since it would mean a datapoint with the same edit date-time was reviewed but another one was not. # probably better to use defensive coding here to ensure the app does not crash in that case. However we need to define which review status we need to select # in this case get the reviewed = "No" - review_status <- unique(review_data_active()$reviewed) - review_comment <- unique(review_data_active()$comment) + review_status <- with(review_data_active(), reviewed[edit_date_time == max(as.POSIXct(edit_date_time))]) |> unique() + review_comment <- with(review_data_active(), comment[edit_date_time == max(as.POSIXct(edit_date_time))]) |> unique() if(length(review_status) != 1) warning("multiple variables in review_status, namely: ", review_status, "Verify data.") } @@ -187,8 +187,8 @@ mod_review_forms_server <- function( ) if(!enable_any_review()) return(FALSE) any(c( - unique(review_data_active()$reviewed) == "No" & input$form_reviewed, - unique(review_data_active()$reviewed) == "Yes" & !input$form_reviewed + unique(with(review_data_active(), reviewed[edit_date_time == max(as.POSIXct(edit_date_time))])) == "No" & input$form_reviewed, + unique(with(review_data_active(), reviewed[edit_date_time == max(as.POSIXct(edit_date_time))])) == "Yes" & !input$form_reviewed )) }) @@ -305,7 +305,7 @@ mod_review_forms_server <- function( "No user name found. Cannot save review" )) validate(need( - !review_data_active()$reviewed == "Yes", + !unique(with(review_data_active(), reviewed[edit_date_time == max(as.POSIXct(edit_date_time))])) == "Yes", "Form already reviewed" )) validate(need(input$form_reviewed, "Requires review")) diff --git a/tests/testthat/test-mod_review_forms.R b/tests/testthat/test-mod_review_forms.R index 98161f6d..0cb4d434 100644 --- a/tests/testthat/test-mod_review_forms.R +++ b/tests/testthat/test-mod_review_forms.R @@ -136,7 +136,7 @@ describe( ) updated_rows_db <- db_get_review( - db_path, subject = "885", form = "Adverse events" + db_path, ids = 1:2 ) expect_equal(updated_rows_db$comment, c("test review", "test review")) @@ -236,7 +236,7 @@ describe( expect_true(app$get_js("document.getElementById('test-review_comment').disabled;")) # review status and reviewer is saved as expected - saved_review_row <- db_get_review(temp_path, subject = "885", form = "Adverse events") + saved_review_row <- db_get_review(temp_path, ids = 1:2) expect_equal(saved_review_row$status, c("old", "old")) expect_equal(saved_review_row$reviewer, c("Reviewer 1", "test_name (Medical Monitor)")) } @@ -289,8 +289,8 @@ describe( dplyr::filter(r$review_data, subject_id == "885", item_group == "Adverse events") |> dplyr::select(id, dplyr::all_of(idx_cols), edit_date_time, reviewed, comment, status) ) - expect_equal(review_data_active()$item_group, "Adverse events") - expect_equal(nrow(review_data_active()), 1) + expect_equal(review_data_active()$item_group, c("Adverse events", "Adverse events")) + expect_equal(nrow(review_data_active()), 2) expect_error(output[["save_review_error"]], "Requires review") }) }