Skip to content

Worker Examples

Brandon Correa edited this page May 17, 2024 · 1 revision

In Your Tests

(ns acme.mimic)

(def seconds (atom 0))

(defn start-clock []
  (js/setInterval #(swap! seconds inc) 1000))

(defn time-travel []
  (js/setTimeout #(swap! seconds + 120) 88))
(ns acme.mimic-spec
  (:require [acme.mimic :as sut]
            [bwa.mimic.spec-helper :as spec-helper]
            [speclj.core :refer-macros [describe it should=]]))

(describe "Mimic"
  (spec-helper/with-manual-worker)

  (it "travels through time"
    (sut/start-clock)
    (sut/time-travel)
    (let [[timeout] (worker/timeouts)
          [interval] (worker/intervals)]
      (should= 1000 (:delay interval))
      (should= 88 (:delay timeout))
      (should= 0 @sut/seconds)
      (worker/tick! interval)
      (should= 1 @sut/seconds)
      (worker/tick! interval)
      (should= 2 @sut/seconds)
      (worker/tick! timeout)
      (should= 122 @sut/seconds)
      (worker/tick! interval)
      (should= 123 @sut/seconds)))
  )
Clone this wiki locally