From db770c7e0353719ef347c27c58b5de58764d4f00 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 8 May 2023 15:14:03 -0500 Subject: [PATCH] Fixed pre-delete warning check --- .../core/actions/tables/DeleteAction.java | 2 +- .../AbstractPreDeleteCustomizerTest.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java index 2555586f..8717a9a3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java @@ -151,7 +151,7 @@ public class DeleteAction recordsWithValidationErrors.add(record); primaryKeysToRemoveFromInput.add(record.getValue(primaryKeyField)); } - else + else if(CollectionUtils.nullSafeHasContents(record.getWarnings())) { recordsWithValidationWarnings.add(record); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/AbstractPreDeleteCustomizerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/AbstractPreDeleteCustomizerTest.java index ca07fa0e..03c049fd 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/AbstractPreDeleteCustomizerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/AbstractPreDeleteCustomizerTest.java @@ -86,6 +86,27 @@ class AbstractPreDeleteCustomizerTest extends BaseTest getOutput = new GetAction().execute(getInput); assertNull(getOutput.getRecord()); } + + //////////////////////////////////////////////////////////// + // try a delete that the pre-customizer should warn about // + //////////////////////////////////////////////////////////// + { + DeleteInput deleteInput = new DeleteInput(); + deleteInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); + deleteInput.setPrimaryKeys(List.of(3)); + DeleteOutput deleteOutput = new DeleteAction().execute(deleteInput); + assertEquals(0, deleteOutput.getRecordsWithErrors().size()); + assertEquals(1, deleteOutput.getRecordsWithWarnings().size()); + assertEquals(3, deleteOutput.getRecordsWithWarnings().get(0).getValue("id")); + assertEquals(1, deleteOutput.getDeletedRecordCount()); + assertEquals("It was a bad idea to delete Bart", deleteOutput.getRecordsWithWarnings().get(0).getWarnings().get(0)); + + GetInput getInput = new GetInput(); + getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); + getInput.setPrimaryKey(3); + GetOutput getOutput = new GetAction().execute(getInput); + assertNull(getOutput.getRecord()); + } } @@ -108,6 +129,10 @@ class AbstractPreDeleteCustomizerTest extends BaseTest { record.addError("You may not delete a Homer."); } + else if(record.getValue("firstName").equals("Bart")) + { + record.addWarning("It was a bad idea to delete Bart"); + } } return (records);