 
 "We wish to see that after we post and consume all events (which need to be the same events), all events are acknowledged."
 (fact
+ :integ
  (let [event (fn [u1 u2] {:kind :fact
                           :name "test/follows"
                           :key u1


"To demonstrate how it works we will mock a database that stores all the received events into into an `atom`."
(fact
 (def stored-events (atom [])))

"We mock a module function to provide our mock `database-event-storage-chan`.
It takes tuples `[event ack]`, where `event` is an event (map) to be stored 
and `ack` is a channel to be closed once the event is stored."
(fact
 (defn mock-db-storage-module [$]
   (di/provide $ database-event-storage-chan [foo]
               (let [database-event-storage-chan (async/chan)]

"To demonstrate our local cluster we will create one, and then deploy a simple topology to it, 
the same one we used for [fact-spou](t#fact-spout)."
(fact
 :integ
 (reset! from-chan (async/chan))
 (let [$ (di/injector {:local-storm-cluster true
                       :modules ['storm.core-test/fact-spout-mock-module]})]
