From 2ff0b9fb58684d51324aa00866dfa80d61a89401 Mon Sep 17 00:00:00 2001
From: Ryan Senior <ryan@metabase.com>
Date: Tue, 13 Jun 2017 13:54:21 -0500
Subject: [PATCH] Sort column dimension_options numerically

---
 src/metabase/api/table.clj       | 11 +++++++----
 test/metabase/api/table_test.clj | 10 +++++++++-
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/metabase/api/table.clj b/src/metabase/api/table.clj
index 9f577a64df4..c1e69d422d6 100644
--- a/src/metabase/api/table.clj
+++ b/src/metabase/api/table.clj
@@ -78,7 +78,7 @@
       updated-table)))
 
 (def ^:private dimension-options
-  (zipmap (map str (range))
+  (zipmap (range)
           (concat
            (map (fn [[name param]]
                   {:name name
@@ -109,19 +109,22 @@
                  ["Quantized by the 100 equally sized bins" ["num-bins" 100]]]))))
 
 (def ^:private dimension-options-for-response
-  (m/map-vals #(dissoc % :type) dimension-options))
+  (m/map-kv (fn [k v]
+              [(str k) (dissoc v :type)]) dimension-options))
 
 (def ^:private datetime-dimension-indexes
   (->> dimension-options
        (m/filter-kv (fn [k v] (isa? (:type v) :type/DateTime)))
        keys
-       sort))
+       sort
+       (map str)))
 
 (def ^:private numeric-dimension-indexes
   (->> dimension-options
        (m/filter-kv (fn [k v] (isa? (:type v) :type/Numeric)))
        keys
-       sort))
+       sort
+       (map str)))
 
 (defn- assoc-dimension-options [resp]
   (-> resp
diff --git a/test/metabase/api/table_test.clj b/test/metabase/api/table_test.clj
index d1f1f67faa6..5f7c7998376 100644
--- a/test/metabase/api/table_test.clj
+++ b/test/metabase/api/table_test.clj
@@ -284,7 +284,7 @@
                             "Spiros Teofil"
                             "Szymon Theutrich"]}
             :created_at   $}))
-  ((user->client :rasta) :get 200 (format "table/%d/query_metadata?include_sensitive_fields=true" (id :users))))
+  #spy/d ((user->client :rasta) :get 200 (format "table/%d/query_metadata?include_sensitive_fields=true" (id :users))))
 
 ;;; GET api/table/:id/query_metadata
 ;;; Make sure that getting the User table does *not* include password info
@@ -484,3 +484,11 @@
                                                               :raw_table_id $
                                                               :created_at   $}))}))}])
   ((user->client :rasta) :get 200 (format "table/%d/fks" (id :users))))
+
+(expect
+  (map str (sort (map #(Long/parseLong %) (var-get datetime-dimension-indexes))))
+  (var-get datetime-dimension-indexes))
+
+(expect
+  (map str (sort (map #(Long/parseLong %) (var-get numeric-dimension-indexes))))
+  (var-get numeric-dimension-indexes))
-- 
GitLab