/
core.clj
91 lines (85 loc) · 3.1 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
;;;; Copyright © 2011 Paul Stadig
;;;;
;;;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
;;;; use this file except in compliance with the License. You may obtain a copy
;;;; of the License at
;;;;
;;;; http://www.apache.org/licenses/LICENSE-2.0
;;;;
;;;; Unless required by applicable law or agreed to in writing, software
;;;; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
;;;; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
;;;; License for the specific language governing permissions and limitations
;;;; under the License.
(ns migratus.test.core
(:require [migratus.protocols :as proto]
migratus.mock
[clojure.test :refer :all]
[migratus.core :refer :all]
migratus.logger)
(:import [migratus.mock MockStore MockMigration]))
(defn migrations [ups downs]
(for [n (range 4)]
{:id (inc n) :name (str "id-" (inc n)) :ups ups :downs downs}))
(deftest test-migrate
(let [ups (atom [])
downs (atom [])
migrations (migrations ups downs)
config {:store :mock
:completed-ids [1 3]
:migrations (reverse migrations)}]
(migrate config)
(is (= [2 4] @ups))
(is (empty? @downs))))
(deftest test-up
(let [ups (atom [])
downs (atom [])
migrations (migrations ups downs)
config {:store :mock
:completed-ids [1 3]
:migrations migrations}]
(testing "should bring up an uncompleted migration"
(up config 4 2)
(is (= [2 4] @ups))
(is (empty? @downs)))
(reset! ups [])
(reset! downs [])
(testing "should do nothing for a completed migration"
(up config 1)
(is (empty? @ups))
(is (empty? @downs)))))
(deftest test-down
(let [ups (atom [])
downs (atom [])
migrations (migrations ups downs)
config {:store :mock
:completed-ids [1 3]
:migrations migrations}]
(testing "should bring down a completed migration"
(down config 1 3)
(is (empty? @ups))
(is (= [3 1] @downs)))
(reset! ups [])
(reset! downs [])
(testing "should do nothing for an uncompleted migration"
(down config 2)
(is (empty? @ups))
(is (empty? @downs)))))
(defn- migration-exists? [name]
(let [migrations (file-seq (migratus.database/find-migration-dir "migrations"))
names (map #(.getName %) migrations)]
(filter #(.contains % name) names)))
(deftest test-create-and-destroy
(let [config {:store :database
:migrations migrations}
migration "create-user"
migration-up "create-user.up.sql"
migration-down "create-user.down.sql"]
(testing "should create two migrations"
(create config migration)
(is (migration-exists? migration-up))
(is (migration-exists? migration-down)))
(testing "should create two migrations"
(destroy config migration)
(not (migration-exists? migration-up))
(not (migration-exists? migration-down)))))