Skip to content

Commit 31d34ff

Browse files
authored
(fix) O3-4985 end current queue entry before checking whether it conf… (#85)
* (fix) O3-4985 end current queue entry before checking whether it conflicts with new entry when transitioning * fix test
1 parent e46114e commit 31d34ff

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

api/src/main/java/org/openmrs/module/queue/api/impl/QueueEntryServiceImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,16 @@ private boolean isDuplicate(QueueEntry queueEntry) {
134134
public QueueEntry transitionQueueEntry(QueueEntryTransition queueEntryTransition) {
135135
// Create a new queue entry
136136
QueueEntry queueEntryToStart = queueEntryTransition.constructNewQueueEntry();
137-
if (isDuplicate(queueEntryToStart)) {
138-
throw new DuplicateQueueEntryException("queue.entry.duplicate.patient");
139-
}
140137

141138
// End the initial queue entry
142139
QueueEntry queueEntryToStop = queueEntryTransition.getQueueEntryToTransition();
143140
queueEntryToStop.setEndedAt(queueEntryTransition.getTransitionDate());
144141
getProxiedQueueEntryService().saveQueueEntry(queueEntryToStop);
145142

143+
if (isDuplicate(queueEntryToStart)) {
144+
throw new DuplicateQueueEntryException("queue.entry.duplicate.patient");
145+
}
146+
146147
// Save the new queue entry
147148
return getProxiedQueueEntryService().saveQueueEntry(queueEntryToStart);
148149
}

api/src/main/java/org/openmrs/module/queue/tasks/AutoCloseVisitQueueEntryTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ protected List<QueueEntry> getActiveVisitQueueEntries() {
7878

7979
/**
8080
* @param queueEntry the QueueEntry to save
81-
*/
81+
*/
8282
protected void saveQueueEntry(QueueEntry queueEntry) {
8383
Context.getService(QueueEntryService.class).saveQueueEntry(queueEntry);
8484
}

integration-tests/src/test/java/org/openmrs/module/queue/api/QueueEntryServiceTest.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import static org.junit.Assert.assertNull;
1414

1515
import java.util.Arrays;
16+
import java.util.Date;
1617
import java.util.List;
1718

1819
import org.junit.Before;
@@ -47,26 +48,23 @@ public void setup() {
4748
INITIAL_DATASET_XML.forEach(this::executeDataSet);
4849
}
4950

50-
@Test
51+
@Test(expected = DuplicateQueueEntryException.class)
5152
public void transitionQueueEntryShouldNotEndInitialIfNewIsDuplicate() {
5253
QueueEntry queueEntry = queueEntryService.getQueueEntryById(3).get();
5354
QueueEntryTransition transition = new QueueEntryTransition();
5455
transition.setQueueEntryToTransition(queueEntry);
5556
transition.setTransitionDate(queueEntry.getStartedAt());
56-
try {
57-
queueEntryService.transitionQueueEntry(transition);
58-
}
59-
catch (DuplicateQueueEntryException ex) {
60-
assertNull(queueEntryService.getQueueEntryById(3).get().getEndedAt());
61-
}
57+
queueEntryService.transitionQueueEntry(transition);
6258
}
6359

6460
@Test
6561
public void transitionQueueEntryShouldEndInitialIfNewIsNotDuplicate() {
66-
QueueEntry queueEntry = queueEntryService.getQueueEntryById(1).get();
62+
QueueEntry queueEntry = queueEntryService.getQueueEntryById(2).get();
63+
assertNull(queueEntry.getEndedAt());
6764
QueueEntryTransition transition = new QueueEntryTransition();
6865
transition.setQueueEntryToTransition(queueEntry);
69-
transition.setTransitionDate(queueEntry.getStartedAt());
70-
assertNotNull(queueEntryService.getQueueEntryById(1).get().getEndedAt());
66+
transition.setTransitionDate(new Date());
67+
queueEntryService.transitionQueueEntry(transition);
68+
assertNotNull(queueEntryService.getQueueEntryById(2).get().getEndedAt());
7169
}
7270
}

0 commit comments

Comments
 (0)