@@ -770,26 +770,26 @@ public void getCareSettings_shouldReturnRetiredCareSettingsIfIncludeRetiredIsSet
770
770
assertEquals (3 , careSettings .size ());
771
771
assertTrue (containsId (careSettings , retiredCareSetting .getCareSettingId ()));
772
772
}
773
-
774
- /**
773
+
774
+ /**
775
775
* @see OrderService#saveRevisedOrder(org.openmrs.Order) (org.openmrs.Order)
776
776
*/
777
777
@ Test
778
- public void saveOrder_shouldReviseDrugOrder () throws Exception {
778
+ public void saveRevisedOrder_shouldReviseDrugOrder () throws Exception {
779
779
executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseActiveOrders.xml" );
780
780
Order order = orderService .getOrder (16 );
781
781
782
- DrugOrder orderWithRevision = (DrugOrder ) order .cloneForRevision ();
783
- orderWithRevision .setDose ((double ) 200 );
784
- orderWithRevision .setDoseUnits (conceptService .getConcept (51 ));
785
- orderWithRevision .setFrequency (orderService .getOrderFrequency (2 ));
786
- orderWithRevision .setAsNeeded (false );
787
- orderWithRevision .setDosingType (DrugOrder .DosingType .FREE_TEXT );
788
- orderWithRevision .setDateCreated (new Date ());
789
- orderWithRevision .setDuration ((double ) 10 );
790
- orderWithRevision .setAutoExpireDate (dateAfterDays (10 ));
791
-
792
- Integer revisedOrderId = orderService .saveRevisedOrder (orderWithRevision ).getOrderId ();
782
+ DrugOrder reviseOrder = (DrugOrder ) order .cloneForRevision ();
783
+ reviseOrder .setDose ((double ) 200 );
784
+ reviseOrder .setDoseUnits (conceptService .getConcept (51 ));
785
+ reviseOrder .setFrequency (orderService .getOrderFrequency (2 ));
786
+ reviseOrder .setAsNeeded (false );
787
+ reviseOrder .setDosingType (DrugOrder .DosingType .FREE_TEXT );
788
+ reviseOrder .setDateCreated (new Date ());
789
+ reviseOrder .setDuration ((double ) 10 );
790
+ reviseOrder .setAutoExpireDate (dateAfterDays (10 ));
791
+
792
+ Integer revisedOrderId = orderService .saveRevisedOrder (reviseOrder ).getOrderId ();
793
793
DrugOrder savedRevisedOrder = (DrugOrder ) orderService .getOrder (revisedOrderId );
794
794
795
795
assertEquals (new Integer (16 ), savedRevisedOrder .getPreviousOrder ().getOrderId ());
@@ -811,11 +811,7 @@ public void saveOrder_shouldReviseDrugOrder() throws Exception {
811
811
* @see OrderService#saveRevisedOrder(org.openmrs.Order)
812
812
*/
813
813
@ Test
814
- public void saveOrder_shouldNotReviseAnInActiveOrder () throws Exception {
815
-
816
- expectedEx .expect (APIException .class );
817
- expectedEx .expectMessage ("Cannot revise an inactive order." );
818
-
814
+ public void saveRevisedOrder_shouldNotReviseAnInActiveOrder () throws Exception {
819
815
executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseInActiveOrders.xml" );
820
816
DrugOrder order = (DrugOrder ) orderService .getOrder (6 );
821
817
@@ -830,6 +826,8 @@ public void saveOrder_shouldNotReviseAnInActiveOrder() throws Exception {
830
826
orderWithRevision .setDuration ((double ) 10 );
831
827
orderWithRevision .setAutoExpireDate (dateAfterDays (10 ));
832
828
829
+ expectedEx .expect (APIException .class );
830
+ expectedEx .expectMessage ("Cannot revise an inactive order." );
833
831
orderService .saveRevisedOrder (orderWithRevision );
834
832
}
835
833
@@ -838,20 +836,61 @@ public void saveOrder_shouldNotReviseAnInActiveOrder() throws Exception {
838
836
* @see OrderService#saveRevisedOrder(org.openmrs.Order)
839
837
*/
840
838
@ Test
841
- public void saveOrder_shouldNotReviseOrderWithNoPreviousOrder () throws Exception {
839
+ public void saveRevisedOrder_shouldNotReviseOrderWithNoPreviousOrder () throws Exception {
840
+ executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseActiveOrders.xml" );
841
+
842
+ DrugOrder order = new DrugOrder ();
843
+ order .setAction (Action .REVISE );
844
+ order .setDose ((double ) 200 );
845
+ order .setDateCreated (new Date ());
846
+ order .setDuration ((double ) 10 );
847
+ order .setAutoExpireDate (dateAfterDays (10 ));
848
+ order .setConcept (conceptService .getConcept (88 ));
849
+ order .setPatient (patientService .getPatient (2 ));
850
+
842
851
expectedEx .expect (APIException .class );
843
852
expectedEx .expectMessage ("Previous order cannot be null" );
853
+ orderService .saveRevisedOrder (order );
854
+ }
855
+
856
+ /**
857
+ * @verifies not allow revisions for a discontinued order
858
+ * @see OrderService#saveRevisedOrder(org.openmrs.Order)
859
+ */
860
+ @ Test
861
+ public void saveRevisedOrder_shouldNotReviseAPreviouslyDiscontinuedOrder () throws Exception {
862
+ executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseDiscontinuedOrders.xml" );
844
863
845
- executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseActiveOrders.xml" );
846
- DrugOrder order = (DrugOrder ) orderService .getOrder (16 );
864
+ Order previousOrder = orderService .getOrder (16 );
865
+
866
+ DrugOrder order = (DrugOrder ) previousOrder .cloneForRevision ();
847
867
order .setDose ((double ) 200 );
848
868
order .setDateCreated (new Date ());
849
- order .setDuration ((double ) 10 );
850
869
order .setAutoExpireDate (dateAfterDays (10 ));
870
+ order .setPreviousOrder (previousOrder );
851
871
872
+ expectedEx .expect (APIException .class );
873
+ expectedEx .expectMessage ("Cannot revise a discontinued order" );
852
874
orderService .saveRevisedOrder (order );
853
875
}
854
876
877
+ /**
878
+ * @verifies not allow revisions only for a REVISE Order
879
+ * @see OrderService#saveRevisedOrder(org.openmrs.Order)
880
+ */
881
+ @ Test
882
+ public void saveRevisedOrder_shouldReviseOnlyWhenActionIsRevise () throws Exception {
883
+ executeDataSet ("org/openmrs/api/include/OrderServiceTest-reviseActiveOrders.xml" );
884
+ Order order = orderService .getOrder (16 );
885
+
886
+ DrugOrder revisionOrder = (DrugOrder ) order .cloneForRevision ();
887
+ revisionOrder .setAction (Action .DISCONTINUE );
888
+
889
+ expectedEx .expect (APIException .class );
890
+ expectedEx .expectMessage ("Action has to be 'REVISE'" );
891
+ orderService .saveRevisedOrder (revisionOrder ).getOrderId ();
892
+ }
893
+
855
894
private Date dateAfterDays (int days ) {
856
895
Calendar c = Calendar .getInstance ();
857
896
c .setTime (new Date ());
0 commit comments