penpot/frontend/test/frontend_tests/plugins/local_storage_test.cljs
2026-08-25 11:55:10 +02:00

29 lines
1.1 KiB
Clojure

;; 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) KALEIDOS SUBSIDIARY SL
(ns frontend-tests.plugins.local-storage-test
(:require
[app.plugins.local-storage :as storage]
[app.plugins.register :as r]
[cljs.test :as t :include-macros true]))
(t/deftest remove-item-removes-the-prefixed-key
(let [data (atom {})
fake #js {}
plugin-id "plugin-a"]
(set! (.-getItem fake) (fn [key] (get @data key)))
(set! (.-setItem fake) (fn [key value] (swap! data assoc key value)))
(set! (.-removeItem fake) (fn [key] (swap! data dissoc key)))
(set! (.-keys fake) (fn [] (to-array (keys @data))))
(with-redefs [r/check-permission (constantly true)
storage/local-storage fake]
(let [proxy (storage/local-storage-proxy plugin-id)]
(.setItem proxy "key" "value")
(t/is (= "value" (.getItem proxy "key")))
(.removeItem proxy "key")
(t/is (nil? (.getItem proxy "key")))
(t/is (empty? @data))))))