forked from diesel-rs/diesel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.rs
More file actions
100 lines (75 loc) · 2.94 KB
/
Copy pathsetup.rs
File metadata and controls
100 lines (75 loc) · 2.94 KB
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
92
93
94
95
96
97
98
99
100
use support::{database, project};
#[test]
fn setup_creates_database() {
let p = project("setup_creates_database").build();
let db = database(&p.database_url());
// sanity check
assert!(!db.exists());
let result = p.command("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(db.exists());
}
#[test]
fn setup_creates_migrations_directory() {
let p = project("setup_creates_migrations_directory").build();
// make sure the project builder doesn't create it for us
assert!(!p.has_file("migrations"));
let result = p.command("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(p.has_file("migrations"));
}
#[test]
fn setup_creates_schema_table() {
let p = project("setup_creates_schema_table").build();
let db = database(&p.database_url());
let result = p.command("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(db.table_exists("__diesel_schema_migrations"));
}
#[test]
fn setup_runs_migrations_if_no_schema_table() {
let p = project("setup_runs_migrations_if_no_schema_table")
.folder("migrations")
.build();
let db = database(&p.database_url());
p.create_migration("12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users");
// sanity check
assert!(!db.exists());
let result = p.command("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}", result.stdout());
assert!(db.table_exists("users"));
}
#[test]
fn setup_doesnt_run_migrations_if_schema_table_exists() {
let p = project("setup_doesnt_run_migrations_if_schema_table_exists")
.folder("migrations")
.build();
let db = database(&p.database_url()).create();
db.execute("CREATE TABLE __diesel_schema_migrations ( version INTEGER )");
p.create_migration("12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users");
let result = p.command("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(!db.table_exists("users"));
}
#[test]
fn setup_notifies_when_creating_a_database() {
let p = project("setup_notifies").build();
let result = p.command("setup").run();
assert!(result.stdout().contains("Creating database:"),
"Unexpected stdout {}", result.stdout());
}
#[test]
#[allow(unused_variables)]
fn setup_doesnt_notify_when_not_creating_a_database() {
let p = project("setup_doesnt_notify").build();
let db = database(&p.database_url()).create();
let result = p.command("setup").run();
assert!(!result.stdout().contains("Creating database:"),
"Unexpected stdout {}", result.stdout());
}