Skip to content
Snippets Groups Projects
Unverified Commit 22eb6980 authored by Cal Herries's avatar Cal Herries Committed by GitHub
Browse files

Add test for "MySQL databases with short system_time_zone IDs cannot sync" (#34055)

parent 5be62132
No related branches found
No related tags found
No related merge requests found
(ns metabase.sync.sync-metadata.sync-timezone-test
(:require
[clj-time.core :as time]
[clojure.java.jdbc :as jdbc]
[clojure.test :refer :all]
[java-time :as t]
[metabase.driver :as driver]
[metabase.driver.mysql-test :as mysql-test]
[metabase.driver.sql-jdbc.connection :as sql-jdbc.conn]
[metabase.models.database :refer [Database]]
[metabase.sync.sync-metadata.sync-timezone :as sync-tz]
[metabase.sync.util-test :as sync.util-test]
[metabase.test :as mt]
[metabase.util :as u]
[toucan2.core :as t2]))
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
(set! *warn-on-reflection* true)
......@@ -65,3 +69,23 @@
(is (nil? tz-after-update)))
(testing "Check that the value was set again after sync"
(is (time/time-zone-for-id (db-timezone db)))))))))
(deftest sync-timezone-mysql-test
(mt/test-driver :mysql
(testing "sync-timezone should allow non-standard MySQL default database time zones, such as offset strings (metabase#34050)"
(let [details (mt/dbdef->connection-details :mysql :db {:database-name "sync_timezone_test"})
spec (sql-jdbc.conn/connection-details->spec :mysql details)]
(mysql-test/drop-if-exists-and-create-db! "sync_timezone_test")
(t2.with-temp/with-temp [:model/Database database {:engine :mysql, :details (assoc details :dbname "sync_timezone_test")}]
(let [global-time-zone (-> (jdbc/query spec ["SELECT @@GLOBAL.time_zone;"])
first
(get (keyword "@@global.time_zone")))]
(try
(jdbc/execute! spec ["SET GLOBAL time_zone = '+8:00';"])
(let [{:keys [step-info]} (sync.util-test/sync-database! "sync-timezone" database)]
(is (= {:timezone-id "+08:00"}
(sync.util-test/only-step-keys step-info)))
(is (= "+08:00"
(t2/select-one-fn :timezone :model/Database (:id database)))))
(finally
(jdbc/execute! spec [(str "SET GLOBAL time_zone = '" global-time-zone "';")])))))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment