2021-07-06 11:54:37 +02:00
use serde_json ::json ;
2021-10-21 14:42:01 +02:00
use super ::DOCUMENTS ;
2022-10-20 18:00:07 +02:00
use crate ::common ::Server ;
2021-10-21 14:42:01 +02:00
2021-07-06 11:54:37 +02:00
#[ actix_rt::test ]
async fn search_unexisting_index ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2021-10-26 19:36:48 +02:00
let expected_response = json! ( {
" message " : " Index `test` not found. " ,
" code " : " index_not_found " ,
" type " : " invalid_request " ,
2023-01-02 16:13:44 +01:00
" link " : " https://docs.meilisearch.com/errors#index-not-found "
2021-10-26 19:36:48 +02:00
} ) ;
2021-07-06 11:54:37 +02:00
index
. search ( json! ( { " q " : " hello " } ) , | response , code | {
2021-10-26 19:36:48 +02:00
assert_eq! ( code , 404 ) ;
assert_eq! ( response , expected_response ) ;
2021-07-06 11:54:37 +02:00
} )
. await ;
}
#[ actix_rt::test ]
async fn search_unexisting_parameter ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
index
. search ( json! ( { " marin " : " hello " } ) , | response , code | {
assert_eq! ( code , 400 , " {} " , response ) ;
2021-10-26 19:36:48 +02:00
assert_eq! ( response [ " code " ] , " bad_request " ) ;
2021-07-06 11:54:37 +02:00
} )
. await ;
}
2021-10-21 14:42:01 +02:00
2022-04-07 11:27:06 +02:00
#[ actix_rt::test ]
2022-12-14 13:00:43 +01:00
async fn search_invalid_crop_marker ( ) {
2022-04-07 11:27:06 +02:00
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-12-14 13:00:43 +01:00
// object
let response = index . search_post ( json! ( { " cropMarker " : { " marker " : " <crop> " } } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Map `{ \" marker \" : \" <crop> \" }`, expected a String at `.cropMarker`. " ) ,
" code " : String ( " invalid_search_crop_marker " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-crop-marker " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
// array
let response = index . search_post ( json! ( { " cropMarker " : [ " marker " , " <crop> " ] } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Sequence `[ \" marker \" , \" <crop> \" ]`, expected a String at `.cropMarker`. " ) ,
" code " : String ( " invalid_search_crop_marker " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-crop-marker " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
}
#[ actix_rt::test ]
async fn search_invalid_highlight_pre_tag ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
// object
let response = index . search_post ( json! ( { " highlightPreTag " : { " marker " : " <em> " } } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Map `{ \" marker \" : \" <em> \" }`, expected a String at `.highlightPreTag`. " ) ,
" code " : String ( " invalid_search_highlight_pre_tag " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-highlight-pre-tag " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
// array
let response = index . search_post ( json! ( { " highlightPreTag " : [ " marker " , " <em> " ] } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Sequence `[ \" marker \" , \" <em> \" ]`, expected a String at `.highlightPreTag`. " ) ,
" code " : String ( " invalid_search_highlight_pre_tag " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-highlight-pre-tag " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
}
#[ actix_rt::test ]
async fn search_invalid_highlight_post_tag ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
// object
let response = index . search_post ( json! ( { " highlightPostTag " : { " marker " : " </em> " } } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Map `{ \" marker \" : \" </em> \" }`, expected a String at `.highlightPostTag`. " ) ,
" code " : String ( " invalid_search_highlight_post_tag " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-highlight-post-tag " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
// array
let response = index . search_post ( json! ( { " highlightPostTag " : [ " marker " , " </em> " ] } ) ) . await ;
meili_snap ::snapshot! ( format! ( " {:#?} " , response ) , @ r ###"
(
Object {
" message " : String ( " invalid type: Sequence `[ \" marker \" , \" </em> \" ]`, expected a String at `.highlightPostTag`. " ) ,
" code " : String ( " invalid_search_highlight_post_tag " ) ,
" type " : String ( " invalid_request " ) ,
2023-01-05 20:52:26 +01:00
" link " : String ( " https://docs.meilisearch.com/errors#invalid-search-highlight-post-tag " ) ,
2022-12-14 13:00:43 +01:00
} ,
400 ,
)
" ###);
2022-04-07 11:27:06 +02:00
}
2021-10-21 14:42:01 +02:00
#[ actix_rt::test ]
async fn filter_invalid_syntax_object ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2022-11-28 16:27:41 +01:00
" message " : " Was expecting an operation `=`, `!=`, `>=`, `>`, `<=`, `<`, `IN`, `NOT IN`, `TO`, `EXISTS`, `NOT EXISTS`, or `_geoRadius` at `title & Glass`. \n 1:14 title & Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2021-10-26 19:36:48 +02:00
. search ( json! ( { " filter " : " title & Glass " } ) , | response , code | {
2021-10-21 14:42:01 +02:00
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
. await ;
}
#[ actix_rt::test ]
async fn filter_invalid_syntax_array ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2022-11-28 16:27:41 +01:00
" message " : " Was expecting an operation `=`, `!=`, `>=`, `>`, `<=`, `<`, `IN`, `NOT IN`, `TO`, `EXISTS`, `NOT EXISTS`, or `_geoRadius` at `title & Glass`. \n 1:14 title & Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-06-28 13:01:18 +02:00
. search ( json! ( { " filter " : [ " title & Glass " ] } ) , | response , code | {
2021-10-26 19:36:48 +02:00
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
2021-10-21 14:42:01 +02:00
. await ;
}
#[ actix_rt::test ]
async fn filter_invalid_syntax_string ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " Found unexpected characters at the end of the filter: `XOR title = Glass`. You probably forgot an `OR` or an `AND` rule. \n 15:32 title = Glass XOR title = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-10-20 18:00:07 +02:00
. search ( json! ( { " filter " : " title = Glass XOR title = Glass " } ) , | response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
2021-10-21 14:42:01 +02:00
. await ;
}
#[ actix_rt::test ]
async fn filter_invalid_attribute_array ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " Attribute `many` is not filterable. Available filterable attributes are: `title`. \n 1:5 many = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-06-28 13:01:18 +02:00
. search ( json! ( { " filter " : [ " many = Glass " ] } ) , | response , code | {
2021-10-21 14:42:01 +02:00
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
. await ;
}
#[ actix_rt::test ]
async fn filter_invalid_attribute_string ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " Attribute `many` is not filterable. Available filterable attributes are: `title`. \n 1:5 many = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search ( json! ( { " filter " : " many = Glass " } ) , | response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
. await ;
}
#[ actix_rt::test ]
async fn filter_reserved_geo_attribute_array ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " `_geo` is a reserved keyword and thus can't be used as a filter expression. Use the _geoRadius(latitude, longitude, distance) built-in rule to filter on _geo field coordinates. \n 1:5 _geo = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-06-28 13:01:18 +02:00
. search ( json! ( { " filter " : [ " _geo = Glass " ] } ) , | response , code | {
2021-10-21 14:42:01 +02:00
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
. await ;
}
#[ actix_rt::test ]
async fn filter_reserved_geo_attribute_string ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " `_geo` is a reserved keyword and thus can't be used as a filter expression. Use the _geoRadius(latitude, longitude, distance) built-in rule to filter on _geo field coordinates. \n 1:5 _geo = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search ( json! ( { " filter " : " _geo = Glass " } ) , | response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
. await ;
}
#[ actix_rt::test ]
async fn filter_reserved_attribute_array ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " `_geoDistance` is a reserved keyword and thus can't be used as a filter expression. \n 1:13 _geoDistance = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-10-20 18:00:07 +02:00
. search ( json! ( { " filter " : [ " _geoDistance = Glass " ] } ) , | response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
2021-10-21 14:42:01 +02:00
. await ;
}
#[ actix_rt::test ]
async fn filter_reserved_attribute_string ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " filterableAttributes " : [ " title " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-12-02 16:03:26 +01:00
" message " : " `_geoDistance` is a reserved keyword and thus can't be used as a filter expression. \n 1:13 _geoDistance = Glass " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_filter " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-filter "
2021-10-21 14:42:01 +02:00
} ) ;
index
2022-10-20 18:00:07 +02:00
. search ( json! ( { " filter " : " _geoDistance = Glass " } ) , | response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} )
2021-10-21 14:42:01 +02:00
. await ;
}
#[ actix_rt::test ]
async fn sort_geo_reserved_attribute ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " sortableAttributes " : [ " id " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-10-26 19:36:48 +02:00
" message " : " `_geo` is a reserved keyword and thus can't be used as a sort expression. Use the _geoPoint(latitude, longitude) built-in rule to sort on _geo field coordinates. " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_sort " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-sort "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search (
json! ( {
" sort " : [ " _geo:asc " ]
} ) ,
| response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} ,
)
. await ;
}
#[ actix_rt::test ]
async fn sort_reserved_attribute ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " sortableAttributes " : [ " id " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-10-26 19:36:48 +02:00
" message " : " `_geoDistance` is a reserved keyword and thus can't be used as a sort expression. " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_sort " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-sort "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search (
json! ( {
" sort " : [ " _geoDistance:asc " ]
} ) ,
| response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} ,
)
. await ;
}
#[ actix_rt::test ]
async fn sort_unsortable_attribute ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " sortableAttributes " : [ " id " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-10-26 19:36:48 +02:00
" message " : " Attribute `title` is not sortable. Available sortable attributes are: `id`. " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_sort " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-sort "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search (
json! ( {
" sort " : [ " title:asc " ]
} ) ,
| response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} ,
)
. await ;
}
#[ actix_rt::test ]
async fn sort_invalid_syntax ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
2022-10-20 18:00:07 +02:00
index . update_settings ( json! ( { " sortableAttributes " : [ " id " ] } ) ) . await ;
2021-10-21 14:42:01 +02:00
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
2021-10-26 19:36:48 +02:00
" message " : " Invalid syntax for the sort parameter: expected expression ending by `:asc` or `:desc`, found `title`. " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_sort " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-sort "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search (
json! ( {
" sort " : [ " title " ]
} ) ,
| response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} ,
)
. await ;
}
#[ actix_rt::test ]
async fn sort_unset_ranking_rule ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
index
. update_settings (
2021-10-26 19:36:48 +02:00
json! ( { " sortableAttributes " : [ " title " ] , " rankingRules " : [ " proximity " , " exactness " ] } ) ,
2021-10-21 14:42:01 +02:00
)
. await ;
let documents = DOCUMENTS . clone ( ) ;
index . add_documents ( documents , None ) . await ;
2021-12-02 16:03:26 +01:00
index . wait_task ( 1 ) . await ;
2021-10-21 14:42:01 +02:00
let expected_response = json! ( {
" message " : " The sort ranking rule must be specified in the ranking rules settings to use the sort parameter at search time. " ,
2023-01-09 18:59:09 +01:00
" code " : " invalid_search_sort " ,
2021-10-21 14:42:01 +02:00
" type " : " invalid_request " ,
2023-01-09 18:59:09 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid-search-sort "
2021-10-21 14:42:01 +02:00
} ) ;
index
. search (
json! ( {
2021-10-26 19:36:48 +02:00
" sort " : [ " title:asc " ]
2021-10-21 14:42:01 +02:00
} ) ,
| response , code | {
assert_eq! ( response , expected_response ) ;
assert_eq! ( code , 400 ) ;
} ,
)
. await ;
}