Skip to content

Commit

Permalink
Fixing an issue in the string generator which shouldn't have been an …
Browse files Browse the repository at this point in the history
…issue.

Adding sqlite unit tests, making then all tests run and build conditional
features in the ci so that we can actually test our code properly 🤷
  • Loading branch information
Katharina Sabel committed May 26, 2018
1 parent d8f87b7 commit 9434a06
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 19 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ before_script:

# Build, test, benchmark, document. Gogogogo!
script:
- cargo build --verbose --all
- cargo test --verbose --all
- cargo bench --all
- cargo build --verbose --all --features="pg sqlite3"
- cargo test --verbose --all --features="pg sqlite3"
- cargo bench --all --features="pg sqlite3"
- cargo doc

# Upload the whole mess
Expand Down
2 changes: 1 addition & 1 deletion src/backend/pg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ impl SqlGenerator for Pg {

#[cfg_attr(rustfmt, rustfmt_skip)] /* This shouldn't be formatted. It's too long */
format!(
"{} {} {}",
"{}{}{}",
match t {
Primary => format!("{}\"{}\" {}", Pg::prefix(ex), name, Pg::print_type(t)),
Text => format!("{}\"{}\" {}", Pg::prefix(ex), name, Pg::print_type(t)),
Expand Down
73 changes: 58 additions & 15 deletions src/tests/pg/add_column.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
//! All add_column combinations for pgsql
#![allow(unused_imports)]

use backend::{SqlGenerator, Pg};
use Type::*;
use backend::{Pg, SqlGenerator};
use Column;

use Type::*;

#[test]
fn text() {
Expand Down Expand Up @@ -50,7 +50,10 @@ fn binary() {
#[test]
fn foreign() {
let sql = Pg::add_column(true, "Foreign", &Column::new(Foreign("posts")));
assert_eq!(String::from("ADD COLUMN \"Foreign\" INTEGER REFERENCES posts"), sql);
assert_eq!(
String::from("ADD COLUMN \"Foreign\" INTEGER REFERENCES posts"),
sql
);
}

#[test]
Expand All @@ -67,14 +70,28 @@ fn array_text() {

#[test]
fn array_varchar() {
let sql = Pg::add_column(true, "Array of Varchar", &Column::new(Array(Box::new(Varchar(255)))));
assert_eq!(String::from("ADD COLUMN \"Array of Varchar\" VARCHAR(255)[]"), sql);
let sql = Pg::add_column(
true,
"Array of Varchar",
&Column::new(Array(Box::new(Varchar(255)))),
);
assert_eq!(
String::from("ADD COLUMN \"Array of Varchar\" VARCHAR(255)[]"),
sql
);
}

#[test]
fn array_integer() {
let sql = Pg::add_column(true, "Array of Integer", &Column::new(Array(Box::new(Integer))));
assert_eq!(String::from("ADD COLUMN \"Array of Integer\" INTEGER[]"), sql);
let sql = Pg::add_column(
true,
"Array of Integer",
&Column::new(Array(Box::new(Integer))),
);
assert_eq!(
String::from("ADD COLUMN \"Array of Integer\" INTEGER[]"),
sql
);
}

#[test]
Expand All @@ -85,30 +102,56 @@ fn array_float() {

#[test]
fn array_double() {
let sql = Pg::add_column(true, "Array of Double", &Column::new(Array(Box::new(Double))));
let sql = Pg::add_column(
true,
"Array of Double",
&Column::new(Array(Box::new(Double))),
);
assert_eq!(String::from("ADD COLUMN \"Array of Double\" DOUBLE[]"), sql);
}

#[test]
fn array_boolean() {
let sql = Pg::add_column(true, "Array of Boolean", &Column::new(Array(Box::new(Boolean))));
assert_eq!(String::from("ADD COLUMN \"Array of Boolean\" BOOLEAN[]"), sql);
let sql = Pg::add_column(
true,
"Array of Boolean",
&Column::new(Array(Box::new(Boolean))),
);
assert_eq!(
String::from("ADD COLUMN \"Array of Boolean\" BOOLEAN[]"),
sql
);
}

#[test]
fn array_binary() {
let sql = Pg::add_column(true, "Array of Binary", &Column::new(Array(Box::new(Binary))));
let sql = Pg::add_column(
true,
"Array of Binary",
&Column::new(Array(Box::new(Binary))),
);
assert_eq!(String::from("ADD COLUMN \"Array of Binary\" BINARY[]"), sql);
}

#[test]
fn array_custom() {
let sql = Pg::add_column(true, "Array of Point", &Column::new(Array(Box::new(Custom("POINT")))));
let sql = Pg::add_column(
true,
"Array of Point",
&Column::new(Array(Box::new(Custom("POINT")))),
);
assert_eq!(String::from("ADD COLUMN \"Array of Point\" POINT[]"), sql);
}

#[test]
fn array_array_integer() {
let sql = Pg::add_column(true, "Array of Array of Integer", &Column::new(Array(Box::new(Array(Box::new(Integer))))));
assert_eq!(String::from("ADD COLUMN \"Array of Array of Integer\" INTEGER[][]"), sql);
let sql = Pg::add_column(
true,
"Array of Array of Integer",
&Column::new(Array(Box::new(Array(Box::new(Integer))))),
);
assert_eq!(
String::from("ADD COLUMN \"Array of Array of Integer\" INTEGER[][]"),
sql
);
}
1 change: 1 addition & 0 deletions src/tests/pg/create_table.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//! Some unit tests that create create tables
#![allow(unused_imports)]

use backend::{Pg, SqlGenerator};
use {Migration, Table};
Expand Down
1 change: 1 addition & 0 deletions src/tests/pg/simple.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//! Other simple table/ column migrations
#![allow(unused_imports)]

use backend::{SqlGenerator, Pg};
use Type::*;
Expand Down
3 changes: 3 additions & 0 deletions src/tests/sqlite3/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
//! A few simple tests for the sqlite3 string backend
mod simple;
42 changes: 42 additions & 0 deletions src/tests/sqlite3/simple.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//! Other simple table/ column migrations
#![allow(unused_imports)]

use backend::{SqlGenerator, Sqlite};


#[test]
fn create_table() {
let sql = Sqlite::create_table("table_to_create");
assert_eq!(String::from("CREATE TABLE \"table_to_create\""), sql);
}

#[test]
fn create_table_if_not_exists() {
let sql = Sqlite::create_table_if_not_exists("table_to_create");
assert_eq!(String::from("CREATE TABLE IF NOT EXISTS \"table_to_create\""), sql);
}

#[test]
fn drop_table() {
let sql = Sqlite::drop_table("table_to_drop");
assert_eq!(String::from("DROP TABLE \"table_to_drop\""), sql);
}

#[test]
fn drop_table_if_exists() {
let sql = Sqlite::drop_table_if_exists("table_to_drop");
assert_eq!(String::from("DROP TABLE IF EXISTS \"table_to_drop\""), sql);
}

#[test]
fn rename_table() {
let sql = Sqlite::rename_table("old_table", "new_table");
assert_eq!(String::from("ALTER TABLE \"old_table\" RENAME TO \"new_table\""), sql);
}

#[test]
fn alter_table() {
let sql = Sqlite::alter_table("table_to_alter");
assert_eq!(String::from("ALTER TABLE \"table_to_alter\""), sql);
}

0 comments on commit 9434a06

Please sign in to comment.