                         :return          :all-new})))
 
   (expect ; We can add update a set
-    {:id 10 :name "foo" :someset #{"a" "b" "c" "d" "e"}}
+    abcde-set
     (do
+      (far/delete-item *client-opts* ttable {:id 10})
+      (far/put-item *client-opts* ttable  abc-set)
       (far/update-item *client-opts* ttable
                        {:id 10}
                        {:update-expr     "ADD someset :toset"

                        :return          :all-new})))

  (expect ; We can remove elements from a set
    {:id 10 :name "foo" :someset #{"a" "c" "e" "f"}}
    (do
      (far/update-item *client-opts* ttable
                       {:id 10}
                       {:update-expr     "DELETE someset :todel"
                        :expr-attr-vals  {":todel" #{"b" "d"}}
                        :return          :all-new})))


  (expect ; Condition expression support in update-item
   #=(far/ex :conditional-check-failed)
   (do
     (far/update-item *client-opts* ttable
       {:id 10}
       {:cond-expr       "#name <> :name"
        :update-expr     "SET #name = :name"
        :expr-attr-names {"#name" "name"}
        :expr-attr-vals  {":name" "foo"}
        :return          :all-new})))

  (expect ; Condition expression support in put-item
   #=(far/ex :conditional-check-failed)
   (do
     (far/put-item *client-opts* ttable i
       {:cond-expr "attribute_not_exists(id) AND #name <> :name"
        :expr-attr-names {"#name" "name"}
        :expr-attr-vals  {":name" "foo"}}))))

(let [items [{:id 11 :name "eleven" :test "batch"}
             {:id 12 :name "twelve" :test "batch"}

     (doseq [[item record] (mapv vector items records)]
       (expect {:old-image {}
                :new-image item} (in record))))
  )
