more-speech/spec/more_speech/user_configuration_spec.clj
2023-01-30 14:26:08 -06:00

81 lines
3.2 KiB
Clojure

(ns more-speech.user-configuration-spec
(:require [speclj.core :refer :all]
[more-speech.user-configuration :refer :all]
[more-speech.mem :refer :all]))
(declare lte)
(describe "user configuration"
(with-stubs)
(context "basic functions"
(before (clear-mem))
(it "sets and gets a config"
(set-config :test "test")
(should= "test" (get-config :test)))
(it "sets and gets a nested config"
(set-config [:test :nest] "nest")
(should= "nest" (get-config [:test :nest])))
)
(context "export user profile"
(with lte (* 2 86400))
(it "creates if empty"
(let [uc (validate {})]
(should (contains? uc :export-user-profile))
(should= 7 (get-in uc [:export-user-profile :export-after-days]))
(should= 0 (get-in uc [:export-user-profile :last-time-exported]))))
(it "decides if it is time to export"
(with-redefs [keys-last-modified (fn [] 0)]
(set-config [:export-user-profile :export-after-days] 10)
(set-config [:export-user-profile :last-time-exported] @lte)
(should (should-export-profile? (* 12 86400)))
(should (should-export-profile? (* 13 86400)))
(should-not (should-export-profile? (* 11 86400)))))
(it "will export if keys file has changed"
(with-redefs [keys-last-modified (fn [] (* 3 86400))]
(set-config [:export-user-profile :export-after-days] 10)
(set-config [:export-user-profile :last-time-exported] @lte)
(should (should-export-profile? (* 12 86400)))
(should (should-export-profile? (* 13 86400)))
(should (should-export-profile? (* 11 86400)))))
(it "won't export if :export-after-days is :never"
(set-config [:export-user-profile :export-after-days] :never)
(set-config [:export-user-profile :last-time-exported] @lte)
(should-not (should-export-profile? (* 12 86400)))
(should-not (should-export-profile? (* 13 86400)))
(should-not (should-export-profile? (* 11 86400))))
(it "sets the last exported time"
(set-config [:export-user-profile :export-after-days] 10)
(set-config [:export-user-profile :last-time-exported] @lte)
(set-last-time-profile-exported 99)
(should= 99 (get-config [:export-user-profile :last-time-exported])))
)
(context "gather historical metadata"
(it "creates the configuration parameters if not present."
(let [uc (validate {})]
(should (contains? uc :import-metadata))
(should= 30 (get-in uc [:import-metadata :import-after-days]))
(should= 0 (get-in uc [:import-metadata :last-time-imported]))))
(it "decides if it is time to import"
(set-config [:import-metadata :import-after-days] 10)
(set-config [:import-metadata :last-time-imported] (* 2 86400))
(should (should-import-metadata? (* 12 86400)))
(should (should-import-metadata? (* 13 86400)))
(should-not (should-import-metadata? (* 11 86400))))
(it "sets the last imported time"
(set-config [:import-metadata :import-after-days] 10)
(set-config [:import-metadata :last-time-imported] (* 2 86400))
(set-last-time-metadata-imported 99)
(should= 99 (get-config [:import-metadata :last-time-imported])))
)
)