mirror of
https://github.com/actix/examples
synced 2024-11-23 22:41:07 +01:00
Add tests to diesel example (#414)
* add tests to diesel example * add diesel migration to gh workflow * update diesel gh action * update diesel gh action * review #414 diesel tests
This commit is contained in:
parent
c3407627d0
commit
75c19eb5c9
7
.github/workflows/linux.yml
vendored
7
.github/workflows/linux.yml
vendored
@ -49,6 +49,13 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
redis-version: 6
|
redis-version: 6
|
||||||
|
|
||||||
|
- name: run diesel migrations
|
||||||
|
run: |
|
||||||
|
cargo install diesel_cli
|
||||||
|
cd database_interactions/diesel
|
||||||
|
diesel migration run
|
||||||
|
chmod a+rwx test.db
|
||||||
|
|
||||||
- name: cargo test
|
- name: cargo test
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
|
5
Cargo.lock
generated
5
Cargo.lock
generated
@ -1874,6 +1874,7 @@ dependencies = [
|
|||||||
name = "diesel-example"
|
name = "diesel-example"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"actix-rt",
|
||||||
"actix-web",
|
"actix-web",
|
||||||
"diesel",
|
"diesel",
|
||||||
"dotenv",
|
"dotenv",
|
||||||
@ -3037,9 +3038,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.80"
|
version = "0.2.86"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614"
|
checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libgit2-sys"
|
name = "libgit2-sys"
|
||||||
|
@ -18,3 +18,6 @@ r2d2 = "0.8"
|
|||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
uuid = { version = "0.8", features = ["serde", "v4"] }
|
uuid = { version = "0.8", features = ["serde", "v4"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
actix-rt = "1"
|
||||||
|
@ -92,3 +92,58 @@ async fn main() -> std::io::Result<()> {
|
|||||||
.run()
|
.run()
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use actix_web::test;
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn user_routes() {
|
||||||
|
std::env::set_var("RUST_LOG", "actix_web=debug");
|
||||||
|
env_logger::init();
|
||||||
|
dotenv::dotenv().ok();
|
||||||
|
|
||||||
|
let connspec = std::env::var("DATABASE_URL").expect("DATABASE_URL");
|
||||||
|
let manager = ConnectionManager::<SqliteConnection>::new(connspec);
|
||||||
|
let pool = r2d2::Pool::builder()
|
||||||
|
.build(manager)
|
||||||
|
.expect("Failed to create pool.");
|
||||||
|
|
||||||
|
let mut app = test::init_service(
|
||||||
|
App::new()
|
||||||
|
.data(pool.clone())
|
||||||
|
.wrap(middleware::Logger::default())
|
||||||
|
.service(get_user)
|
||||||
|
.service(add_user),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
// Insert a user
|
||||||
|
let req = test::TestRequest::post()
|
||||||
|
.uri("/user")
|
||||||
|
.set_json(&models::NewUser {
|
||||||
|
name: "Test user".to_owned(),
|
||||||
|
})
|
||||||
|
.to_request();
|
||||||
|
|
||||||
|
let resp: models::User = test::read_response_json(&mut app, req).await;
|
||||||
|
|
||||||
|
assert_eq!(resp.name, "Test user");
|
||||||
|
|
||||||
|
// Get a user
|
||||||
|
let req = test::TestRequest::get()
|
||||||
|
.uri(&format!("/user/{}", resp.id))
|
||||||
|
.to_request();
|
||||||
|
|
||||||
|
let resp: models::User = test::read_response_json(&mut app, req).await;
|
||||||
|
|
||||||
|
assert_eq!(resp.name, "Test user");
|
||||||
|
|
||||||
|
// Delete new user from table
|
||||||
|
use crate::schema::users::dsl::*;
|
||||||
|
diesel::delete(users.filter(id.eq(resp.id)))
|
||||||
|
.execute(&pool.get().expect("couldn't get db connection from pool"))
|
||||||
|
.expect("couldn't delete test user from table");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
use crate::schema::users;
|
use crate::schema::users;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Queryable, Insertable)]
|
#[derive(Debug, Clone, Serialize, Deserialize, Queryable, Insertable)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
Loading…
Reference in New Issue
Block a user