              response)))))
 
 (deftest dif-to-echo10-conversion
-  (let [coll (d/ingest "PROV1"
-                       (dc/collection-dif {:short-name "S1"
-                                           :version-id "V1"
-                                           :entry-title "ET1"
-                                           :long-name "L4"
-                                           :summary (name :dif)
-                                           ;; The following fields are needed for DIF to pass xml validation
-                                           :science-keywords [(dc/science-keyword {:category "upcase"
-                                                                                   :topic "Cool"
-                                                                                   :term "Mild"})]
-                                           :organizations [(dc/org :distribution-center "Larc")]
-                                           ;; The following fields are needed for DIF10 to pass xml validation
-                                           :beginning-date-time "1965-12-12T12:00:00Z"
-                                           :ending-date-time "1967-12-12T12:00:00Z"
-                                           :product-specific-attributes [(c/map->ProductSpecificAttribute {:name "moo" :data-type :string})]})
-                       {:format :dif})
-        response (search/retrieve-concept (:concept-id coll) nil {:accept mt/echo10})
-        concept-map {:metadata (:body response)
-                     :format mt/echo10
-                     :concept-type :collection
-                     :provider-id "PROV1"
-                     :native-id "new collection"}
-        {:keys [status body]} (ingest/validate-concept concept-map {:raw? true})]
-    (is (= 200 status))))
+  (testing "Conversion from dif9 to echo10 is successful" 
+    (let [coll (d/ingest "PROV1"
+                         (dc/collection-dif 
+                           {:short-name "S1"
+                            :version-id "V1"
+                            :entry-title "ET1"
+                            :long-name "L4"
+                            :summary (name :dif)
+                            ;; The following fields are needed for DIF to pass xml validation
+                            :science-keywords [(dc/science-keyword {:category "upcase"
+                                                                    :topic "Cool"
+                                                                    :term "Mild"})]
+                            :organizations [(dc/org :distribution-center "Larc")]
+                            ;; The following fields are needed for DIF10 to pass xml validation
+                            :beginning-date-time "1965-12-12T12:00:00Z"
+                            :ending-date-time "1967-12-12T12:00:00Z"
+                            :product-specific-attributes 
+                             [(c/map->ProductSpecificAttribute {:name "moo" :data-type :string})]})
+                         {:format :dif})
+          response (search/retrieve-concept (:concept-id coll) nil {:accept mt/echo10})
+          concept-map {:metadata (:body response)
+                       :format mt/echo10
+                       :concept-type :collection
+                       :provider-id "PROV1"
+                       :native-id "new collection"}
+          {:keys [status body]} (ingest/validate-concept concept-map {:raw? true})]
+      (is (= 200 status)))))
 
 (deftest umm-spec-validation-warnings
-  ;; By default the config return-umm-spec-validation-errors is false, so warnings are returned
-  ;; with the collection. If return-umm-spec-validation-errors was true, errors would be thrown. tests
-  ;; for the errors if return-umm-spec-validation-errors is true are in this file.
-  (testing "Ingest and Ingest Validation"
+  ;; By default the config return-umm-spec-validation-errors is false, so warnings are returned with the collection. 
+  (testing "Ingest and Ingest Validation with warning messages for all formats"
     (are3 [format collection warning-message]
           (do
             (let [response (d/ingest "PROV1" collection {:format format})]

              :errors [(format "Expected revision-id of [7] got [4] for [%s]" concept-id)]}
             response2)))))

(defn- assert-revision-conflict
  [concept-id format-str response]
  (is (= {:status 409
          :errors [(format format-str concept-id)]}
         response)))

;; Added to test out of order processing of ingest and delete requests with revision-ids in their
;; header. The proper handling of incorrectly ordered requests is important for Virtual Product
;; Service which picks events off the queue and sends them to ingest service. It cannot be
;; gauranteed that the ingest events are processed by Virtual Product Service in the same order
;; that the events are placed on the queue.
(deftest revision-conflict-tests
  (testing "Update with lower revision id should be rejected if it comes after an concept with a higher revision id"
    (let [concept (dc/collection-concept {:revision-id 4})
          concept-id (:concept-id (ingest/ingest-concept concept))
          response (ingest/ingest-concept (assoc concept :revision-id 2))]

      (is (= {:status 409
              :errors [(format "Expected revision-id of [2] got [1] for [%s]" concept-id)]}
             response))))
 
  (testing "attempting to ingest using an non-integer revision id returns an error"
    (let [response (ingest/ingest-concept (dc/collection-concept {:concept-id "C2-PROV1"
                                                                  :revision-id "NaN"}))]
      (is (= {:status 422
              :errors [(msg/invalid-revision-id "NaN")]}
             response))))
  
  (testing "attempting to ingest using a negative revision id returns an error"
    (let [response (ingest/ingest-concept (dc/collection-concept {:concept-id "C2-PROV1"
                                                                  :revision-id "-1"}))]
      (is (= {:status 422
              :errors [(msg/invalid-revision-id "-1")]}
             response))))
  
  (testing "ingesting a concept with just the revision-id succeeds"
    (let [response (ingest/ingest-concept (dc/collection-concept {:revision-id "2"}))]
      (is (and (= 200 (:status response)) (= 2 (:revision-id response))))))
  
  (testing "ingesting a concept while skipping revision-ids succeeds, 
            but fails if revision id is smaller than the maximum revision id"
    (let [concept-id "C3-PROV1"
          coll (dc/collection-concept {:concept-id concept-id})
          _ (ingest/ingest-concept (assoc coll :revision-id "2"))
