Details
-
Bug
-
Status: Closed
-
Should
-
Resolution: Fixed
-
Platform 1.9.11, Platform 1.10.3, Platform 1.11.7, Platform 2.0.2
-
None
Description
The Encounter removeProvider(EncounterRole role, Provider provider) method sets voided=true on the first matching provider it finds, regardless of whether that provider is voided or not.
Therefore, if you add and then remove the same provider twice, the second remove fails.
Test to reproduce:
@Test public void multipleAddingAndRemovingOfSameProviderShouldNotFail() throws Exception { Encounter encounter = new Encounter(); EncounterRole role = new EncounterRole(); Provider provider = new Provider(); encounter.addProvider(role, provider); Assert.assertEquals(1, encounter.getProvidersByRole(role).size()); Assert.assertTrue(encounter.getProvidersByRole(role).contains(provider)); encounter.removeProvider(role, provider); //the size should be 0 for non voided providers Assert.assertEquals(0, encounter.getProvidersByRole(role).size()); encounter.addProvider(role, provider); Assert.assertEquals(1, encounter.getProvidersByRole(role).size()); encounter.removeProvider(role, provider); Assert.assertEquals(0, encounter.getProvidersByRole(role).size()); // current fails, returns 1 } }
(this might make a good intro ticket)