diff --git a/src/awaitility_clj/core.clj b/src/awaitility_clj/core.clj index bd3a4b9..1a79e6f 100644 --- a/src/awaitility_clj/core.clj +++ b/src/awaitility_clj/core.clj @@ -23,6 +23,7 @@ [^ConditionFactory factory [option-key option-data]] (case option-key :at-most (.atMost factory ^Duration (tuple->duration option-data)) + :at-least (.atLeast factory ^Duration (tuple->duration option-data)) :poll-interval (.pollInterval factory ^Duration (tuple->duration option-data)))) (defn- apply-options diff --git a/test/awaitility_clj/core_test.clj b/test/awaitility_clj/core_test.clj index 28ca4bb..6971e5f 100644 --- a/test/awaitility_clj/core_test.clj +++ b/test/awaitility_clj/core_test.clj @@ -18,12 +18,24 @@ (testing "wait-for throws ConditionTimeoutException if condition times out" (let [start-time (System/currentTimeMillis) end-time (+ start-time 1500)] - (is (thrown? + (is (thrown-with-msg? ConditionTimeoutException + #"was not fulfilled within" (wait-for {:at-most [200 :milliseconds]} (fn [] (>= (System/currentTimeMillis) end-time)))))))) +(deftest wait-for-throws-exception-if-finished-before-at-least + (testing "wait-for throws ConditionTimeoutException if condition happens before given at-least parameter" + (let [start-time (System/currentTimeMillis) + end-time (+ start-time 100)] + (is (thrown-with-msg? + ConditionTimeoutException + #"milliseconds which is earlier than expected minimum timeout 500 milliseconds" + (wait-for + {:at-least [500 :milliseconds]} + (fn [] (>= (System/currentTimeMillis) end-time)))))))) + (deftest wait-for-poll-intervals (testing "wait-for uses default poll interval if none set" (let [start-time (System/currentTimeMillis)