Skip to content
Snippets Groups Projects
Commit 7d936284 authored by Cam Saül's avatar Cam Saül
Browse files

Merge pull request #139 from metabase/api_query_test

Api query test
parents 2b101927 b01e0f6b
No related branches found
No related tags found
No related merge requests found
......@@ -78,15 +78,14 @@
(hydrate :creator :database :can_read :can_write)))
(defendpoint PUT "/:id" [id :as {{:keys [timezone database details] :as body} :body}]
(require-params database details)
(defendpoint PUT "/:id" [id :as {{:keys [timezone database] :as body} :body}]
(require-params database)
(read-check Database (:id database))
(let-404 [query (sel :one Query :id id)]
(write-check query)
(-> (util/select-non-nil-keys body :name :public_perms)
(assoc :version (:version query) ; don't increment this here. that happens on pre-update
:database_id (:id database)
:details details)
(-> (util/select-non-nil-keys body :name :public_perms :details)
(assoc :version (:version query) ; don't increment this here. That happens on pre-update
:database_id (:id database)) ; you can change the DB of a Query why??
(#(mapply upd Query id %)))
(-> (sel :one Query :id id)
(hydrate :creator :database))))
......
(ns metabase.api.query-test
"Tests for /api/query endpoints."
(:require [expectations :refer :all]
[korma.core :refer :all]
[metabase.db :refer :all]
(metabase.models [query :refer [Query]])
[metabase.test.util :refer [match-$ random-name expect-eval-actual-first]]
[metabase.test-data :refer :all]))
;; ## Helper Fns
(defn create-query []
((user->client :rasta) :post 200 "query" {:database (:id @test-db)
:sql "SELECT COUNT(*) FROM VENUES;"}))
;; ## POST /api/query
;; Check that we can save a Query
(expect-eval-actual-first
(match-$ (sel :one Query (order :id :DESC))
{:database_id (:id @test-db)
:name $
:type "rawsql"
:creator_id (user->id :rasta)
:updated_at $
:details {:timezone nil
:sql "SELECT COUNT(*) FROM VENUES;"}
:id $
:version $
:public_perms 0
:created_at $})
(create-query))
;; ## GET /api/query
;; Check that we can fetch details for a Query
(expect-eval-actual-first
(match-$ (sel :one Query (order :id :DESC))
{:id $
:name $
:type "rawsql"
:creator_id (user->id :rasta)
:updated_at $
:details {:timezone nil
:sql "SELECT COUNT(*) FROM VENUES;"}
:database_id (:id @test-db)
:database (match-$ @test-db
{:created_at $
:engine "h2"
:id $
:details $
:updated_at $
:name "Test Database"
:organization_id (:id @test-org)
:description nil})
:creator (match-$ (fetch-user :rasta)
{:common_name "Rasta Toucan"
:date_joined $
:last_name "Toucan"
:id $
:is_superuser false
:last_login $
:first_name "Rasta"
:email "rasta@metabase.com"})
:can_read true
:can_write true
:version $
:public_perms 0
:created_at $})
(let [{id :id} (create-query)]
((user->client :rasta) :get 200 (format "query/%d" id))))
;; ## PUT /api/query
;; Check that we can update a Query
(expect-eval-actual-first
["My Awesome Query"
"My Awesome Query 2"]
(let [{:keys [id name database_id]} (create-query)
get-query-name (fn [] (sel :one :field [Query :name] :id id))]
[(do ((user->client :rasta) :put 200 (format "query/%d" id) {:name "My Awesome Query"
:database {:id database_id}})
(get-query-name))
(do ((user->client :rasta) :put 200 (format "query/%d" id) {:name "My Awesome Query 2"
:database {:id database_id}})
(get-query-name))]))
......@@ -230,15 +230,15 @@
(string? password)
(medley/boolean? admin)
(medley/boolean? superuser)]}
(or (sel :one User :email email)
(let [org (load/test-org)
user (ins User
:email email
:first_name first
:last_name last
:password password
:is_superuser superuser
:is_active active)]
(or (exists? OrgPerm :organization_id (:id org) :user_id (:id user))
(ins OrgPerm :organization_id (:id org) :user_id (:id user) :admin admin))
user)))
(let [org @test-org] ; we're derefing test-org here to force lazy loading of DB
(or (sel :one User :email email)
(let [user (ins User
:email email
:first_name first
:last_name last
:password password
:is_superuser superuser
:is_active active)]
(or (exists? OrgPerm :organization_id (:id org) :user_id (:id user))
(ins OrgPerm :organization_id (:id org) :user_id (:id user) :admin admin))
user))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment