fix integration tests for post routes
This commit is contained in:
parent
a7352e5793
commit
f37f3736a7
65
.vscode/launch.json
vendored
Normal file
65
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in library 'actix_admin'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--lib",
|
||||||
|
"--package=actix_admin"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "actix_admin",
|
||||||
|
"kind": "lib"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug integration test 'integration_test_get_resp_is_success'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--test=integration_test_get_resp_is_success",
|
||||||
|
"--package=actix_admin"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "integration_test_get_resp_is_success",
|
||||||
|
"kind": "test"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug integration test 'integration_test_post_resp_is_success'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--test=integration_test_post_resp_is_success",
|
||||||
|
"--package=actix_admin"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "integration_test_post_resp_is_success",
|
||||||
|
"kind": "test"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -85,8 +85,8 @@ impl From<String> for ActixAdminModel {
|
|||||||
if !key_value.is_empty() {
|
if !key_value.is_empty() {
|
||||||
let mut iter = key_value.splitn(2, '=');
|
let mut iter = key_value.splitn(2, '=');
|
||||||
hashmap.insert(
|
hashmap.insert(
|
||||||
iter.next().unwrap().to_string(),
|
iter.next().unwrap().to_string().replace("%3A", ":"),
|
||||||
iter.next().unwrap().to_string(),
|
iter.next().unwrap().to_string().replace("%3A", ":"),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,36 +9,18 @@ mod tests {
|
|||||||
use actix_web::http::header::ContentType;
|
use actix_web::http::header::ContentType;
|
||||||
use actix_web::test;
|
use actix_web::test;
|
||||||
use actix_web::{middleware, web, App};
|
use actix_web::{middleware, web, App};
|
||||||
|
use serde::{Serialize};
|
||||||
|
use sea_orm::EntityTrait;
|
||||||
|
use sea_orm::PaginatorTrait;
|
||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
async fn comment_create_post() {
|
async fn comment_create_and_edit() {
|
||||||
test_post_is_success("/admin/comment/create_post_from_plaintext").await
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_web::test]
|
|
||||||
async fn post_create_post() {
|
|
||||||
test_post_is_success("/admin/post/create_post_from_plaintext").await
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_web::test]
|
|
||||||
async fn post_edit_post() {
|
|
||||||
test_post_is_success("/admin/post/edit_post_from_plaintext").await
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_web::test]
|
|
||||||
async fn comment_edit_post() {
|
|
||||||
test_post_is_success("/admin/comment/edit_post_from_plaintext").await
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn test_post_is_success(url: &str) {
|
|
||||||
let conn = super::create_tables_and_get_connection().await;
|
let conn = super::create_tables_and_get_connection().await;
|
||||||
|
|
||||||
let actix_admin_builder = super::create_actix_admin_builder();
|
let actix_admin_builder = super::create_actix_admin_builder();
|
||||||
let actix_admin = actix_admin_builder.get_actix_admin();
|
let actix_admin = actix_admin_builder.get_actix_admin();
|
||||||
|
|
||||||
let app_state = super::AppState {
|
let app_state = super::AppState {
|
||||||
db: conn,
|
db: conn,
|
||||||
actix_admin: actix_admin,
|
actix_admin,
|
||||||
};
|
};
|
||||||
|
|
||||||
let app = test::init_service(
|
let app = test::init_service(
|
||||||
@ -49,12 +31,96 @@ mod tests {
|
|||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
#[derive(Serialize)]
|
||||||
|
pub struct CommentModel {
|
||||||
|
id: &'static str,
|
||||||
|
insert_date: &'static str,
|
||||||
|
comment: &'static str,
|
||||||
|
user: &'static str,
|
||||||
|
is_visible: &'static str,
|
||||||
|
post_id: Option<&'static str>,
|
||||||
|
my_decimal: &'static str
|
||||||
|
}
|
||||||
|
|
||||||
|
let model = CommentModel {
|
||||||
|
id: "0",
|
||||||
|
insert_date: "1977-04-01T14:00",
|
||||||
|
comment: "test",
|
||||||
|
user: "test",
|
||||||
|
is_visible: "true",
|
||||||
|
post_id: None,
|
||||||
|
my_decimal: "113.141" // must be larger than 100
|
||||||
|
};
|
||||||
|
|
||||||
let req = test::TestRequest::post()
|
let req = test::TestRequest::post()
|
||||||
.insert_header(ContentType::form_url_encoded())
|
.insert_header(ContentType::form_url_encoded())
|
||||||
.uri(url)
|
.uri("/admin/comment/create_post_from_plaintext")
|
||||||
|
.set_form(model)
|
||||||
.to_request();
|
.to_request();
|
||||||
let resp = test::call_service(&app, req).await;
|
let resp = test::call_service(&app, req).await;
|
||||||
|
|
||||||
assert!(resp.status().is_success());
|
assert!(resp.status().is_redirection());
|
||||||
|
|
||||||
|
let entities = super::test_setup::Comment::find()
|
||||||
|
.paginate(&app_state.db, 50)
|
||||||
|
.fetch_page(0)
|
||||||
|
.await
|
||||||
|
.expect("could not retrieve entities");
|
||||||
|
|
||||||
|
assert!(entities.len() == 1, "After post, db does not contain 1 model");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_web::test]
|
||||||
|
async fn post_create_and_edit() {
|
||||||
|
let conn = super::create_tables_and_get_connection().await;
|
||||||
|
let actix_admin_builder = super::create_actix_admin_builder();
|
||||||
|
let actix_admin = actix_admin_builder.get_actix_admin();
|
||||||
|
let app_state = super::AppState {
|
||||||
|
db: conn,
|
||||||
|
actix_admin,
|
||||||
|
};
|
||||||
|
|
||||||
|
let app = test::init_service(
|
||||||
|
App::new()
|
||||||
|
.app_data(web::Data::new(app_state.clone()))
|
||||||
|
.service(actix_admin_builder.get_scope::<super::AppState>())
|
||||||
|
.wrap(middleware::Logger::default()),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
#[derive(Serialize)]
|
||||||
|
pub struct PostModel {
|
||||||
|
id: &'static str,
|
||||||
|
title: &'static str,
|
||||||
|
text: &'static str,
|
||||||
|
tea_mandatory: &'static str,
|
||||||
|
insert_date: &'static str,
|
||||||
|
}
|
||||||
|
|
||||||
|
let model = PostModel {
|
||||||
|
id: "0",
|
||||||
|
insert_date: "1977-04-01",
|
||||||
|
title: "test",
|
||||||
|
text: "test",
|
||||||
|
tea_mandatory: "EverydayTea"
|
||||||
|
};
|
||||||
|
|
||||||
|
let req = test::TestRequest::post()
|
||||||
|
.insert_header(ContentType::form_url_encoded())
|
||||||
|
.uri("/admin/post/create_post_from_plaintext")
|
||||||
|
.set_form(model)
|
||||||
|
.to_request();
|
||||||
|
let resp = test::call_service(&app, req).await;
|
||||||
|
|
||||||
|
assert!(resp.status().is_redirection());
|
||||||
|
|
||||||
|
let entities = super::test_setup::Post::find()
|
||||||
|
.paginate(&app_state.db, 50)
|
||||||
|
.fetch_page(0)
|
||||||
|
.await
|
||||||
|
.expect("could not retrieve entities");
|
||||||
|
|
||||||
|
assert!(entities.len() == 1, "After post, db does not contain 1 model");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ pub fn create_actix_admin_builder() -> ActixAdminBuilder {
|
|||||||
admin_builder.add_entity::<AppState, Comment>(&comment_view_model);
|
admin_builder.add_entity::<AppState, Comment>(&comment_view_model);
|
||||||
|
|
||||||
admin_builder.add_custom_handler_for_entity::<AppState, Comment>(
|
admin_builder.add_custom_handler_for_entity::<AppState, Comment>(
|
||||||
"/create_comment_from_plaintext",
|
"/create_post_from_plaintext",
|
||||||
web::post().to(create_post_from_plaintext::<AppState, Comment>));
|
web::post().to(create_post_from_plaintext::<AppState, Comment>));
|
||||||
|
|
||||||
admin_builder.add_custom_handler_for_entity::<AppState, Post>(
|
admin_builder.add_custom_handler_for_entity::<AppState, Post>(
|
||||||
@ -60,7 +60,7 @@ pub fn create_actix_admin_builder() -> ActixAdminBuilder {
|
|||||||
web::post().to(edit_post_from_plaintext::<AppState, Post>));
|
web::post().to(edit_post_from_plaintext::<AppState, Post>));
|
||||||
|
|
||||||
admin_builder.add_custom_handler_for_entity::<AppState, Comment>(
|
admin_builder.add_custom_handler_for_entity::<AppState, Comment>(
|
||||||
"/edit_comment_from_plaintext/{id}",
|
"/edit_post_from_plaintext/{id}",
|
||||||
web::post().to(edit_post_from_plaintext::<AppState, Comment>));
|
web::post().to(edit_post_from_plaintext::<AppState, Comment>));
|
||||||
|
|
||||||
admin_builder
|
admin_builder
|
||||||
|
Loading…
Reference in New Issue
Block a user