                                                ; the 4th item should never be updated because the 4rd one did not change a value
             actual (get @update-calls (:id checking))]
         (testing "the expected transactions are updated"
+          (when-not (= expected actual)
+            (pprint {:expected expected
+                     :actual actual
+                     :diff (diff expected actual)}))
           (is (= expected actual)
               "Only items with changes are updated")
           (is (not-any? #(= (:index %) 4) actual) "The last item is never updated"))

                         :amount 13M
                         :balance 13M}]
        actual-items (map #(select-keys % [:index :amount :balance])
                          (transactions/items-by-account storage-spec (:id pets)))]
    (testing "item values are correct"
      (is (= expected-items actual-items)
          "The Pets account should have the correct items"))
    (testing "account balances are correct"

        expected-checking [{:index 2 :amount 102M   :balance 798.01M}
                           {:index 1 :amount 99.99M :balance 900.01M}
                           {:index 0 :amount 1000M  :balance 1000M}]
        actual-checking (->> (items-by-account (:id checking))
                             (map #(select-keys % [:index :amount :balance])))
        expected-groceries [{:index 1 :amount 102M   :balance 201.99M}
                            {:index 0 :amount 99.99M :balance 99.99M}]
        actual-groceries (->> (items-by-account (:id groceries))
                              (map #(select-keys % [:index :amount :balance])))]
    (testing "transaction item balances are correct"
      (is (= expected-checking actual-checking)
