2022-07-30 16:24:36 +00:00
|
|
|
(ns more-speech.user-configuration-spec
|
|
|
|
(:require [speclj.core :refer :all]
|
|
|
|
[more-speech.user-configuration :refer :all]
|
2023-01-30 20:26:08 +00:00
|
|
|
[more-speech.mem :refer :all]))
|
2022-07-30 16:24:36 +00:00
|
|
|
|
2023-01-29 16:00:29 +00:00
|
|
|
(declare lte)
|
|
|
|
|
2022-07-30 16:24:36 +00:00
|
|
|
(describe "user configuration"
|
2022-07-30 19:30:19 +00:00
|
|
|
(with-stubs)
|
2023-01-26 20:38:06 +00:00
|
|
|
(context "basic functions"
|
2023-01-29 16:00:29 +00:00
|
|
|
(before (clear-mem))
|
2023-01-26 20:38:06 +00:00
|
|
|
(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])))
|
|
|
|
)
|
|
|
|
|
2022-07-30 16:24:36 +00:00
|
|
|
(context "export user profile"
|
2023-01-29 16:00:29 +00:00
|
|
|
(with lte (* 2 86400))
|
2022-07-30 16:24:36 +00:00
|
|
|
(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"
|
2022-07-30 19:30:19 +00:00
|
|
|
(with-redefs [keys-last-modified (fn [] 0)]
|
2023-01-29 16:00:29 +00:00
|
|
|
(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)))))
|
2022-07-30 19:30:19 +00:00
|
|
|
|
|
|
|
(it "will export if keys file has changed"
|
|
|
|
(with-redefs [keys-last-modified (fn [] (* 3 86400))]
|
2023-01-29 16:00:29 +00:00
|
|
|
(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)))))
|
2022-07-30 19:30:19 +00:00
|
|
|
|
|
|
|
(it "won't export if :export-after-days is :never"
|
2023-01-29 16:00:29 +00:00
|
|
|
(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))))
|
2022-07-31 13:24:18 +00:00
|
|
|
|
|
|
|
(it "sets the last exported time"
|
2023-01-29 16:00:29 +00:00
|
|
|
(set-config [:export-user-profile :export-after-days] 10)
|
|
|
|
(set-config [:export-user-profile :last-time-exported] @lte)
|
2022-07-31 13:24:18 +00:00
|
|
|
(set-last-time-profile-exported 99)
|
2023-01-29 16:00:29 +00:00
|
|
|
(should= 99 (get-config [:export-user-profile :last-time-exported])))
|
2022-07-31 13:24:18 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
(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"
|
2023-01-29 16:00:29 +00:00
|
|
|
(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))))
|
2022-07-31 13:24:18 +00:00
|
|
|
|
|
|
|
(it "sets the last imported time"
|
2023-01-29 16:00:29 +00:00
|
|
|
(set-config [:import-metadata :import-after-days] 10)
|
|
|
|
(set-config [:import-metadata :last-time-imported] (* 2 86400))
|
2022-07-31 13:24:18 +00:00
|
|
|
(set-last-time-metadata-imported 99)
|
2023-01-29 16:00:29 +00:00
|
|
|
(should= 99 (get-config [:import-metadata :last-time-imported])))
|
2022-07-30 16:24:36 +00:00
|
|
|
)
|
|
|
|
)
|
2022-07-30 19:30:19 +00:00
|
|
|
|