diff --git a/api/src/main/java/org/openmrs/module/legacyui/api/impl/LegacyUIImpl.java b/api/src/main/java/org/openmrs/module/legacyui/api/impl/LegacyUIImpl.java index 9b441c823..1c62f4e8a 100644 --- a/api/src/main/java/org/openmrs/module/legacyui/api/impl/LegacyUIImpl.java +++ b/api/src/main/java/org/openmrs/module/legacyui/api/impl/LegacyUIImpl.java @@ -225,12 +225,23 @@ public void triggerStateConversion(Patient patient, Concept trigger, Date dateCo */ @Transactional(readOnly = true) public Provider getProviderForUser(User user) { - ProviderService ps = Context.getProviderService(); - Collection providers = ps.getProvidersByPerson(user.getPerson(), true); - if (providers.isEmpty()) { - throw new IllegalStateException("User " + user + " has no provider accounts, unable to create orders"); - } - return providers.iterator().next(); + if (user == null) { + throw new IllegalArgumentException("User cannot be null"); + } + + if (user.getPerson() == null) { + throw new IllegalStateException("User has no associated person record"); + } + + ProviderService ps = Context.getProviderService(); + + Collection providers = ps.getProvidersByPerson(user.getPerson(), true); + + if (providers.isEmpty()) { + throw new IllegalStateException("User " + user + " has no provider accounts, unable to create orders"); + } + + return providers.iterator().next(); } /** diff --git a/api/src/test/java/org/openmrs/module/legacyui/api/impl/LegacyUIImplTest.java b/api/src/test/java/org/openmrs/module/legacyui/api/impl/LegacyUIImplTest.java new file mode 100644 index 000000000..15b39dfb9 --- /dev/null +++ b/api/src/test/java/org/openmrs/module/legacyui/api/impl/LegacyUIImplTest.java @@ -0,0 +1,31 @@ +package org.openmrs.module.legacyui.api.impl; + +import org.junit.jupiter.api.Test; +import org.openmrs.User; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class LegacyUIImplTest { + + @Test + void shouldThrowExceptionIfUserIsNull() { + + LegacyUIImpl service = new LegacyUIImpl(); + + assertThrows(IllegalArgumentException.class, () -> { + service.getProviderForUser(null); + }); + } + + @Test + void shouldThrowExceptionIfProviderNotFound() { + + LegacyUIImpl service = new LegacyUIImpl(); + + User user = new User(); + + assertThrows(IllegalStateException.class, () -> { + service.getProviderForUser(user); + }); + } +} \ No newline at end of file