storage_test.cljs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. (ns microtables-frontend.storage-test
  2. (:require
  3. [cljs.test :refer-macros [deftest is]]
  4. [microtables-frontend.utils.storage :as storage]))
  5. (deftest table-empty-nil-table
  6. (is (true? (storage/table-empty? nil))))
  7. (deftest table-empty-blank-values
  8. (is (true? (storage/table-empty? {"A" {1 {:value ""} 2 {:value nil}}}))))
  9. (deftest table-empty-with-content
  10. (is (false? (storage/table-empty? {"A" {1 {:value "42"}}}))))
  11. (deftest serialize-round-trip
  12. (let [data {"A" {1 {:value "59"} 12 {:value "=A1+3"}}}]
  13. (is (= data (storage/deserialize (storage/serialize data))))))
  14. (deftest deserialize-corrupt-returns-nil
  15. (is (nil? (storage/deserialize "{:a 1"))) ; unterminated map, e.g. a write truncated by quota
  16. (is (nil? (storage/deserialize nil))))
  17. (deftest rename-entry-updates-matching-id
  18. (let [index [{:id "a" :name "Old"} {:id "b" :name "Other"}]
  19. renamed (storage/rename-entry index "a" "New")]
  20. (is (= "New" (:name (first (filter #(= (:id %) "a") renamed)))))
  21. (is (= "Other" (:name (first (filter #(= (:id %) "b") renamed)))))))
  22. (deftest remove-entry-removes-matching-id
  23. (let [index [{:id "a"} {:id "b"}]]
  24. (is (= [{:id "b"}] (storage/remove-entry index "a")))))
  25. (deftest sort-by-recency-orders-descending
  26. (let [index [{:id "a" :last-opened-at 100} {:id "b" :last-opened-at 300} {:id "c" :last-opened-at 200}]]
  27. (is (= ["b" "c" "a"] (map :id (storage/sort-by-recency index))))))
  28. (deftest save-entry-preserves-created-at
  29. (let [index [{:id "a" :name "Old" :created-at 50 :last-opened-at 50}]
  30. saved (storage/save-entry index "a" "Renamed" 999)]
  31. (is (= 50 (:created-at (first saved))))
  32. (is (= 999 (:last-opened-at (first saved))))
  33. (is (= "Renamed" (:name (first saved))))))
  34. (deftest save-entry-creates-new
  35. (let [saved (storage/save-entry [] "x" "New Table" 10)]
  36. (is (= [{:id "x" :name "New Table" :created-at 10 :last-opened-at 10}] saved))))