;; This Source Code Form is subject to the terms of the Mozilla Public ;; License, v. 2.0. If a copy of the MPL was not distributed with this ;; file, You can obtain one at http://mozilla.org/MPL/2.0/. ;; ;; Copyright (c) 2019 Andrey Antukh (ns uxbox.tests.test-emails (:require [clojure.test :as t] [promesa.core :as p] [mockery.core :refer [with-mock]] [uxbox.db :as db] [uxbox.emails :as emails] [uxbox.services.core :as sv] [uxbox.tests.helpers :as th])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) (t/deftest register-email-rendering (let [result (emails/render emails/register {:to "example@uxbox.io"})] (t/is (map? result)) (t/is (contains? result :subject)) (t/is (contains? result :body)) (t/is (contains? result :to)) (t/is (contains? result :reply-to)) (t/is (vector? (:body result))))) (t/deftest email-sending-and-sendmail-job (let [res @(emails/send! emails/register {:to "example@uxbox.io"})] (t/is (nil? res))) (with-mock mock {:target 'uxbox.jobs.sendmail/impl-sendmail :return (p/resolved nil)} (let [res @(uxbox.jobs.sendmail/send-emails {})] (t/is (= 1 res)) (t/is (:called? @mock)) (t/is (= 1 (:call-count @mock)))) (let [res @(uxbox.jobs.sendmail/send-emails {})] (t/is (= 0 res)) (t/is (:called? @mock)) (t/is (= 1 (:call-count @mock))))))