| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- (ns microtables-frontend.storage-test
- (:require
- [cljs.test :refer-macros [deftest is]]
- [microtables-frontend.utils.storage :as storage]))
- (deftest table-empty-nil-table
- (is (true? (storage/table-empty? nil))))
- (deftest table-empty-blank-values
- (is (true? (storage/table-empty? {"A" {1 {:value ""} 2 {:value nil}}}))))
- (deftest table-empty-with-content
- (is (false? (storage/table-empty? {"A" {1 {:value "42"}}}))))
- (deftest serialize-round-trip
- (let [data {"A" {1 {:value "59"} 12 {:value "=A1+3"}}}]
- (is (= data (storage/deserialize (storage/serialize data))))))
- (deftest deserialize-corrupt-returns-nil
- (is (nil? (storage/deserialize "{:a 1"))) ; unterminated map, e.g. a write truncated by quota
- (is (nil? (storage/deserialize nil))))
- (deftest rename-entry-updates-matching-id
- (let [index [{:id "a" :name "Old"} {:id "b" :name "Other"}]
- renamed (storage/rename-entry index "a" "New")]
- (is (= "New" (:name (first (filter #(= (:id %) "a") renamed)))))
- (is (= "Other" (:name (first (filter #(= (:id %) "b") renamed)))))))
- (deftest remove-entry-removes-matching-id
- (let [index [{:id "a"} {:id "b"}]]
- (is (= [{:id "b"}] (storage/remove-entry index "a")))))
- (deftest sort-by-recency-orders-descending
- (let [index [{:id "a" :last-opened-at 100} {:id "b" :last-opened-at 300} {:id "c" :last-opened-at 200}]]
- (is (= ["b" "c" "a"] (map :id (storage/sort-by-recency index))))))
- (deftest save-entry-preserves-created-at
- (let [index [{:id "a" :name "Old" :created-at 50 :last-opened-at 50}]
- saved (storage/save-entry index "a" "Renamed" 999)]
- (is (= 50 (:created-at (first saved))))
- (is (= 999 (:last-opened-at (first saved))))
- (is (= "Renamed" (:name (first saved))))))
- (deftest save-entry-creates-new
- (let [saved (storage/save-entry [] "x" "New Table" 10)]
- (is (= [{:id "x" :name "New Table" :created-at 10 :last-opened-at 10}] saved))))
|