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

Remove metabase.driver.mongo.test-data namespace :yum:

parent 2ca5cca8
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,6 @@
(:require [expectations :refer :all]
[metabase.db :refer :all]
[metabase.driver :as driver]
[metabase.driver.mongo.test-data :as mongo-test-data]
(metabase.models [database :refer [Database]]
[field :refer [Field]]
[table :refer [Table]])
......
......@@ -2,7 +2,6 @@
"Tests for /api/table endpoints."
(:require [expectations :refer :all]
[metabase.db :refer :all]
[metabase.driver.mongo.test-data :as mongo-data :refer [mongo-test-db-id]]
(metabase [http-client :as http]
[middleware :as middleware])
(metabase.models [field :refer [Field]]
......
(ns metabase.driver.mongo.test-data
"Functionality related to creating / loading a test database for the Mongo driver."
(:require [medley.core :as m]
[metabase.db :refer :all]
(metabase.models [database :refer [Database]]
[field :refer [Field]]
[table :refer [Table]])
(metabase.test.data [dataset-definitions :as defs]
[mongo :as loader])
[metabase.util :as u]))
;; ## MONGO-TEST-DB + OTHER DELAYS
(defonce
^{:doc "A delay that fetches or creates the Mongo test `Database`.
If DB is created, `load-data` and `sync-database!` are called to get the DB in a state that we can use for testing."}
mongo-test-db
(delay (@(resolve 'metabase.test.data/get-or-create-database!) (loader/dataset-loader) defs/test-data)))
(defonce
^{:doc "A Delay that returns the ID of `mongo-test-db`, forcing creation of it if needed."}
mongo-test-db-id
(delay (let [id (:id @mongo-test-db)]
(assert (integer? id))
id)))
......@@ -5,7 +5,6 @@
[metabase.db :refer :all]
[metabase.driver :as driver]
[metabase.driver.mongo :refer [mongo]]
[metabase.driver.mongo.test-data :refer :all]
(metabase.models [field :refer [Field]]
[table :refer [Table]])
[metabase.test.data.datasets :as datasets]
......@@ -18,6 +17,9 @@
~expected
~actual))
(defn- mongo-db []
(datasets/db (datasets/dataset-name->dataset :mongo)))
;; ## Constants + Helper Fns/Macros
;; TODO - move these to metabase.test-data ?
(def ^:private ^:const table-names
......@@ -49,7 +51,7 @@
"Return an object that can be passed like a `Table` to driver sync functions."
[table-name]
{:pre [(keyword? table-name)]}
{:db mongo-test-db
{:db (delay (mongo-db))
:name (name table-name)})
(defn- field-name->fake-field
......@@ -114,7 +116,7 @@
{:name "categories"}
{:name "users"}
{:name "venues"}}
((:active-tables mongo) @mongo-test-db))
((:active-tables mongo) (mongo-db)))
;; ### table->column-names
(expect-when-testing-mongo
......@@ -173,7 +175,7 @@
{:rows 1000, :active true, :name "checkins"}
{:rows 15, :active true, :name "users"}
{:rows 100, :active true, :name "venues"}]
(sel :many :fields [Table :name :active :rows] :db_id @mongo-test-db-id (k/order :name)))
(sel :many :fields [Table :name :active :rows] :db_id (:id (mongo-db)) (k/order :name)))
;; Test that Fields got synced correctly, and types are correct
(expect-when-testing-mongo
......@@ -196,6 +198,6 @@
(let [table->fields (fn [table-name]
(sel :many :fields [Field :name :base_type :special_type]
:active true
:table_id (sel :one :id Table :db_id @mongo-test-db-id, :name (name table-name))
:table_id (sel :one :id Table :db_id (:id (mongo-db)), :name (name table-name))
(k/order :name)))]
(map table->fields table-names)))
......@@ -7,7 +7,6 @@
[expectations :refer :all]
[metabase.db :refer :all]
[metabase.driver :as driver]
[metabase.driver.mongo.test-data :as mongo-data]
(metabase.models [field :refer [Field]]
[table :refer [Table]])
(metabase.test.data [dataset-definitions :as defs]
......@@ -45,38 +44,33 @@
;; ## Mongo
(deftype MongoDriverData []
IDataset
(load-data! [_]
@mongo-data/mongo-test-db
(assert (integer? @mongo-data/mongo-test-db-id)))
(dataset-loader [_]
(mongo/dataset-loader))
(db [_]
@mongo-data/mongo-test-db)
(defn- generic-load-data! [{:keys [dbpromise], :as this}]
(when-not (realized? dbpromise)
(deliver dbpromise (@(resolve 'metabase.test.data/get-or-create-database!) (dataset-loader this) defs/test-data)))
@dbpromise)
(format-name [_ table-or-field-name]
(if (= table-or-field-name "id") "_id"
table-or-field-name))
(defrecord MongoDriverData [dbpromise])
(default-schema [_] nil)
(id-field-type [_] :IntegerField)
(sum-field-type [_] :IntegerField)
(timestamp-field-type [_] :DateField))
(extend MongoDriverData
IDataset
{:load-data! generic-load-data!
:db generic-load-data!
:dataset-loader (fn [_]
(mongo/->MongoDatasetLoader))
:format-name (fn [_ table-or-field-name]
(if (= table-or-field-name "id") "_id"
table-or-field-name))
:default-schema (constantly nil)
:id-field-type (constantly :IntegerField)
:sum-field-type (constantly :IntegerField)
:timestamp-field-type (constantly :DateField)})
;; ## Generic SQL
(defn- generic-sql-load-data! [{:keys [dbpromise], :as this}]
(when-not (realized? dbpromise)
(deliver dbpromise (@(resolve 'metabase.test.data/get-or-create-database!) (dataset-loader this) defs/test-data)))
@dbpromise)
(def ^:private GenericSQLIDatasetMixin
{:load-data! generic-sql-load-data!
:db generic-sql-load-data!
{:load-data! generic-load-data!
:db generic-load-data!
:format-name (fn [_ table-or-field-name]
table-or-field-name)
:timestamp-field-type (constantly :DateTimeField)
......@@ -91,7 +85,7 @@
IDataset
(merge GenericSQLIDatasetMixin
{:dataset-loader (fn [_]
(h2/dataset-loader))
(h2/->H2DatasetLoader))
:default-schema (constantly "PUBLIC")
:format-name (fn [_ table-or-field-name]
(clojure.string/upper-case table-or-field-name))
......@@ -107,7 +101,7 @@
IDataset
(merge GenericSQLIDatasetMixin
{:dataset-loader (fn [_]
(postgres/dataset-loader))
(postgres/->PostgresDatasetLoader))
:default-schema (constantly "public")
:sum-field-type (constantly :IntegerField)}))
......@@ -120,7 +114,7 @@
IDataset
(merge GenericSQLIDatasetMixin
{:dataset-loader (fn [_]
(mysql/dataset-loader))
(mysql/->MySQLDatasetLoader))
:default-schema (constantly nil)
:sum-field-type (constantly :BigIntegerField)}))
......@@ -133,7 +127,7 @@
IDataset
(merge GenericSQLIDatasetMixin
{:dataset-loader (fn [_]
(sqlserver/dataset-loader))
(sqlserver/->SQLServerDatasetLoader))
:default-schema (constantly "dbo")
:sum-field-type (constantly :IntegerField)}))
......@@ -142,7 +136,7 @@
(def ^:private dataset-name->dataset*
"Map of dataset keyword name -> dataset instance (i.e., an object that implements `IDataset`)."
{:mongo (MongoDriverData.)
{:mongo (MongoDriverData. (promise))
:h2 (H2DriverData. (promise))
:postgres (PostgresDriverData. (promise))
:mysql (MySQLDriverData. (promise))
......
......@@ -222,7 +222,7 @@
(defn- destroy-db! [loader dbdef]
(execute-sql! loader :server dbdef (drop-db-if-exists-sql loader dbdef)))
(def ^:const IDatasetLoaderMixin
(def IDatasetLoaderMixin
"Mixin for `IGenericSQLDatasetLoader` types to implemnt `create-db!` and `destroy-db!` from `IDatasetLoader`."
{:create-db! create-db!
:destroy-db! destroy-db!})
......@@ -91,6 +91,3 @@
(merge generic/IDatasetLoaderMixin
{:database->connection-details database->connection-details
:engine (constantly :h2)}))
(defn dataset-loader []
(->H2DatasetLoader))
......@@ -47,6 +47,3 @@
:destroy-db! destroy-db!
:database->connection-details database->connection-details
:engine (constantly :mongo)})
(defn ^MongoDatasetLoader dataset-loader []
(->MongoDatasetLoader))
......@@ -51,7 +51,3 @@
(merge generic/IDatasetLoaderMixin
{:database->connection-details database->connection-details
:engine (constantly :mysql)}))
(defn dataset-loader []
(->MySQLDatasetLoader))
......@@ -44,6 +44,3 @@
(merge generic/IDatasetLoaderMixin
{:database->connection-details database->connection-details
:engine (constantly :postgres)}))
(defn dataset-loader []
(->PostgresDatasetLoader))
......@@ -97,9 +97,6 @@
:database->connection-details database->connection-details
:engine (constantly :sqlserver)})))
(defn dataset-loader []
(->SQLServerDatasetLoader))
(defn- cleanup-leftover-dbs
"Clean up any leftover DBs that weren't destroyed by the last test run (eg, if it failed for some reason).
......
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