diff --git a/api/src/test/java/org/openmrs/api/db/hibernate/HibernateFormDAOTest.java b/api/src/test/java/org/openmrs/api/db/hibernate/HibernateFormDAOTest.java index 35b6c1e4863c..f973d9f4c5dd 100644 --- a/api/src/test/java/org/openmrs/api/db/hibernate/HibernateFormDAOTest.java +++ b/api/src/test/java/org/openmrs/api/db/hibernate/HibernateFormDAOTest.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; public class HibernateFormDAOTest extends BaseContextSensitiveTest { @@ -49,6 +50,7 @@ public void shouldFilterAgainstFormFields() { .getForms(null, false, Collections.emptyList(), null, formFields, formFields, Arrays.asList(new Field(3))) .size()); + } @Test @@ -56,12 +58,73 @@ public void shouldGetFormFieldsByForm() { Form form = new Form(2); List formFields = dao.getFormFields(form); - assertNotNull(formFields); + +} + +@Test +@@ -64,4 +66,43 @@ +assertEquals(form.getFormId(), formField.getForm().getFormId()); +} +} + + @Test + public void getForms_shouldReturnFormsContainingAnyFormField() { + // Test 1 - Basic: should return forms containing any form field + List anyFormFields = Arrays.asList(new FormField(2)); + List
forms = dao.getForms(null, false, + Collections.emptyList(), null, + anyFormFields, Collections.emptyList(), + Collections.emptyList()); + assertNotNull(forms); + assertTrue(forms.size() > 0); + + // Test 2 - Empty list: should return all forms + List formsWithEmpty = dao.getForms(null, false, + Collections.emptyList(), null, + Collections.emptyList(), Collections.emptyList(), + Collections.emptyList()); + assertNotNull(formsWithEmpty); + + // Test 3 - Multiple fields: should return forms with any field + List multipleFields = Arrays.asList( + new FormField(2), new FormField(3)); + List formsMultiple = dao.getForms(null, false, + Collections.emptyList(), null, + multipleFields, Collections.emptyList(), + Collections.emptyList()); + assertNotNull(formsMultiple); + assertTrue(formsMultiple.size() > 0); - final int EXPECTED_SIZE = 2; - assertEquals(EXPECTED_SIZE, formFields.size()); - for (FormField formField : formFields) { - assertEquals(form.getFormId(), formField.getForm().getFormId()); - } + // Test 4 - Non existent field: should return empty list + List invalidFields = Arrays.asList(new FormField(999)); + List formsInvalid = dao.getForms(null, false, + Collections.emptyList(), null, + invalidFields, Collections.emptyList(), + Collections.emptyList()); + assertNotNull(formsInvalid); + assertTrue(formsInvalid.isEmpty()); + + // Edge case: multiple non-existent fields + List multipleInvalidFields = Arrays.asList( + new FormField(997), + new FormField(998), + new FormField(999)); + List formsMultipleInvalid = dao.getForms(null, false, + Collections.emptyList(), null, + multipleInvalidFields, Collections.emptyList(), + Collections.emptyList()); + assertNotNull(formsMultipleInvalid); + assertTrue(formsMultipleInvalid.isEmpty()); } + } +//A would-be fix for that +List multipleInvalidFields = Arrays.asList( + new FormField(998), + new FormField(999)); +List formsMultipleInvalid = dao.getForms(null, false, + Collections.emptyList(), null, + multipleInvalidFields, Collections.emptyList(), + Collections.emptyList()); +assertNotNull(formsMultipleInvalid); +assertTrue(formsMultipleInvalid.isEmpty());