2021-02-19 02:50:52 +08:00
use crate ::common ::Server ;
2021-09-30 17:20:16 +08:00
use serde_json ::{ json , Value } ;
2021-02-19 02:50:52 +08:00
#[ actix_rt::test ]
async fn create_index_no_primary_key ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . create ( None ) . await ;
2021-07-05 17:21:02 +08:00
assert_eq! ( code , 201 ) ;
2021-02-19 02:50:52 +08:00
assert_eq! ( response [ " uid " ] , " test " ) ;
2021-03-16 01:38:13 +08:00
assert_eq! ( response [ " name " ] , " test " ) ;
2021-02-19 02:50:52 +08:00
assert! ( response . get ( " createdAt " ) . is_some ( ) ) ;
assert! ( response . get ( " updatedAt " ) . is_some ( ) ) ;
assert_eq! ( response [ " createdAt " ] , response [ " updatedAt " ] ) ;
assert_eq! ( response [ " primaryKey " ] , Value ::Null ) ;
2021-03-16 01:38:13 +08:00
assert_eq! ( response . as_object ( ) . unwrap ( ) . len ( ) , 5 ) ;
2021-02-19 02:50:52 +08:00
}
#[ actix_rt::test ]
async fn create_index_with_primary_key ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . create ( Some ( " primary " ) ) . await ;
2021-07-05 17:21:02 +08:00
assert_eq! ( code , 201 ) ;
2021-02-19 02:50:52 +08:00
assert_eq! ( response [ " uid " ] , " test " ) ;
2021-03-16 01:38:13 +08:00
assert_eq! ( response [ " name " ] , " test " ) ;
2021-02-19 02:50:52 +08:00
assert! ( response . get ( " createdAt " ) . is_some ( ) ) ;
assert! ( response . get ( " updatedAt " ) . is_some ( ) ) ;
2021-03-12 21:48:43 +08:00
//assert_eq!(response["createdAt"], response["updatedAt"]);
2021-02-19 02:50:52 +08:00
assert_eq! ( response [ " primaryKey " ] , " primary " ) ;
2021-03-16 01:38:13 +08:00
assert_eq! ( response . as_object ( ) . unwrap ( ) . len ( ) , 5 ) ;
2021-02-19 02:50:52 +08:00
}
2021-09-30 17:20:16 +08:00
#[ actix_rt::test ]
async fn create_index_with_invalid_primary_key ( ) {
let document = json! ( [ { " id " : 2 , " title " : " Pride and Prejudice " } ] ) ;
let server = Server ::new ( ) . await ;
let index = server . index ( " movies " ) ;
let ( _response , code ) = index . add_documents ( document , Some ( " title " ) ) . await ;
assert_eq! ( code , 202 ) ;
index . wait_update_id ( 0 ) . await ;
let ( response , code ) = index . get ( ) . await ;
assert_eq! ( code , 200 ) ;
assert_eq! ( response [ " primaryKey " ] , Value ::Null ) ;
}
2021-02-19 03:32:34 +08:00
#[ actix_rt::test ]
async fn test_create_multiple_indexes ( ) {
let server = Server ::new ( ) . await ;
let index1 = server . index ( " test1 " ) ;
let index2 = server . index ( " test2 " ) ;
let index3 = server . index ( " test3 " ) ;
let index4 = server . index ( " test4 " ) ;
index1 . create ( None ) . await ;
index2 . create ( None ) . await ;
index3 . create ( None ) . await ;
assert_eq! ( index1 . get ( ) . await . 1 , 200 ) ;
assert_eq! ( index2 . get ( ) . await . 1 , 200 ) ;
assert_eq! ( index3 . get ( ) . await . 1 , 200 ) ;
2021-06-16 04:21:52 +08:00
assert_eq! ( index4 . get ( ) . await . 1 , 404 ) ;
2021-02-19 03:32:34 +08:00
}
2021-10-21 20:42:01 +08:00
#[ actix_rt::test ]
async fn error_create_existing_index ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( _ , code ) = index . create ( Some ( " primary " ) ) . await ;
assert_eq! ( code , 201 ) ;
let ( response , code ) = index . create ( Some ( " primary " ) ) . await ;
let expected_response = json! ( {
" message " : " Index primary already exists. " ,
" code " : " index_already_exists " ,
" type " : " invalid_request " ,
" link " :" https://docs.meilisearch.com/errors#index_already_exists "
} ) ;
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 409 ) ;
}
#[ actix_rt::test ]
async fn error_create_with_invalid_index_uid ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test test#! " ) ;
let ( response , code ) = index . create ( None ) . await ;
let expected_response = json! ( {
" message " : " test test#! is not a valid index uid. Index uid can be an integer or a string containing only alphanumeric characters, hyphens (-) and underscores (_). " ,
" code " : " invalid_index_uid " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_index_uid "
} ) ;
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
}