Skip to content
Snippets Groups Projects
Unverified Commit 7b66a650 authored by Nemanja Glumac's avatar Nemanja Glumac Committed by GitHub
Browse files

Do not return setting value if the database persisted in...

Do not return setting value if the database persisted in `last-used-native-database-id` does not exist (anymore) (#39269)

* Do not return value if the database does not exist

* Update tests

* Use negative number for non-existing database id

* Use `discard-setting-changes` macro to reset setting value
parent f965d088
Branches
Tags
No related merge requests found
......@@ -443,7 +443,10 @@
(deferred-tru "The last database a user has selected for a native query or a native model.")
:user-local :only
:visibility :authenticated
:type :integer)
:type :integer
:getter (fn []
(when-let [id (setting/get-value-of-type :integer :last-used-native-database-id)]
(when (t2/exists? :model/Database :id id) id))))
;;; ## ------------------------------------------ AUDIT LOG ------------------------------------------
......
......@@ -538,29 +538,30 @@
(deftest last-used-native-database-id-can-be-read-and-set
(testing "last-used-native-database-id can be read and set"
(mt/with-test-user :rasta
(let [old-db-id (user/last-used-native-database-id)
new-db-id 42]
(try
(is (not= new-db-id old-db-id))
(user/last-used-native-database-id! new-db-id)
(is (= new-db-id (user/last-used-native-database-id)))
(finally
(user/last-used-native-database-id! old-db-id))))))
(let [initial-value (user/last-used-native-database-id)
existing-db-id (:id (t2/select-one Database))
wrong-db-id -999]
(is (nil? initial-value))
(user/last-used-native-database-id! existing-db-id)
(is (= existing-db-id (user/last-used-native-database-id)))
(testing "returns nil if the database doesn't exist"
(user/last-used-native-database-id! wrong-db-id)
(is (nil? (user/last-used-native-database-id)))))))
(testing "last-used-native-database-id should be a user-local setting"
(is (=? {:user-local :only}
(setting/resolve-setting :last-acknowledged-version)))
(mt/with-test-user :rasta
(let [old-db-id (user/last-used-native-database-id)]
(user/last-used-native-database-id! 42)
(mt/with-test-user :crowberto
(let [old-db-id (user/last-used-native-database-id)]
(user/last-used-native-database-id! 21)
(is (= (user/last-used-native-database-id) 21))
(mt/with-test-user :rasta
(is (= (user/last-used-native-database-id) 42)))
(user/last-used-native-database-id! old-db-id)))
(user/last-used-native-database-id! old-db-id)))))
(setting/resolve-setting :last-used-native-database-id)))
(mt/with-temp [Database {id1 :id} {:name "DB1"}
Database {id2 :id} {:name "DB2"}]
(mt/with-test-user :rasta
(mt/discard-setting-changes [last-used-native-database-id]
(user/last-used-native-database-id! id1)
(mt/with-test-user :crowberto
(mt/discard-setting-changes [last-used-native-database-id]
(user/last-used-native-database-id! id2)
(is (= (user/last-used-native-database-id) id2))
(mt/with-test-user :rasta
(is (= (user/last-used-native-database-id) id1))))))))))
(deftest common-name-test
(testing "common_name should be present depending on what is selected"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment