Skip to content
Snippets Groups Projects
Commit fb3a77ed authored by Cam Saul's avatar Cam Saul
Browse files

test for PUT /api/meta/field/:id

parent 22bc49d2
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@
(let-400 1)
(let-404 1)
(match 1)
(match-$ 1)
(macrolet 1)
(org-perms-case 1)
(upd 2)
......
(ns metabase.api.meta.field
(:require [compojure.core :refer [GET PUT]]
[medley.core :as medley]
[metabase.api.common :refer :all]
[metabase.db :refer :all]
(metabase.models [hydrate :refer [hydrate]]
[field :refer [Field]])))
[field :refer [Field]])
[metabase.util :as u]))
(defendpoint GET "/:id" [id]
(->404 (sel :one Field :id id)
read-check
(hydrate [:table :db])))
(defendpoint PUT "/:id" [id :as {{:keys [special_type preview_display description]} :body}]
(defendpoint PUT "/:id" [id :as {body :body}]
(write-check Field id)
(upd Field id :special_type special_type :preview_display preview_display :description description))
(check-500 (->> (u/select-non-nil-keys body :special_type :preview_display :description)
(medley/mapply upd Field id)))
(sel :one Field :id id))
(defendpoint GET "/:id/summary" [id]
(let-404 [{:keys [count distinct-count] :as field} (sel :one Field :id id)]
......
......@@ -4,7 +4,9 @@
(metabase.models [field :refer [Field]]
[table :refer [Table]])
[metabase.test-data :refer :all]
[metabase.test.util :refer [match-$]]))
[metabase.test.util :refer [match-$ expect-eval-actual-first]]))
;; ## GET /api/meta/field/:id
(expect
......@@ -43,8 +45,31 @@
:base_type "TextField"})
((user->client :rasta) :get 200 (format "meta/field/%d" (field->id :users :name))))
;; GET /api/meta/field/:id/summary
;; ## GET /api/meta/field/:id/summary
(expect [["count" 75] ; why doesn't this come back as a dictionary ?
["distincts" 75]]
((user->client :rasta) :get 200 (format "meta/field/%d/summary" (field->id :categories :name))))
;; ## PUT /api/meta/field/:id
;; Check that we can update a Field
(expect-eval-actual-first
(match-$ (sel :one Field :id (field->id :venues :latitude))
{:description nil
:table_id (table->id :venues)
:special_type "latitude"
:name "LONGITUDE"
:updated_at $
:active true
:id $
:field_type "dimension"
:position 0
:preview_display true
:created_at $
:base_type "FloatField"})
(let [result ((user->client :rasta) :put 200 (format "meta/field/:id" (field->id :venues :latitude)) {:special_type :latitude})]
;; this is sketchy. But return the Field back to its unmodified state so it won't affect other unit tests
(upd Field (field->id :venues :latitude) :special_type nil)
;; return the modified Field
result))
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