2023-01-18 15:28:02 +01:00
use meili_snap ::* ;
use serde_json ::json ;
2023-02-16 13:59:58 +01:00
use urlencoding ::encode ;
2023-01-18 15:28:02 +01:00
use crate ::common ::Server ;
#[ actix_rt::test ]
async fn get_all_documents_bad_offset ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . get_all_documents_raw ( " ?offset " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `offset`: could not parse `` as a positive integer " ,
" code " : " invalid_document_offset " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_offset "
2023-01-18 15:28:02 +01:00
}
" ###);
let ( response , code ) = index . get_all_documents_raw ( " ?offset=doggo " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `offset`: could not parse `doggo` as a positive integer " ,
" code " : " invalid_document_offset " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_offset "
2023-01-18 15:28:02 +01:00
}
" ###);
let ( response , code ) = index . get_all_documents_raw ( " ?offset=-1 " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `offset`: could not parse `-1` as a positive integer " ,
" code " : " invalid_document_offset " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_offset "
2023-01-18 15:28:02 +01:00
}
" ###);
}
#[ actix_rt::test ]
async fn get_all_documents_bad_limit ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . get_all_documents_raw ( " ?limit " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `limit`: could not parse `` as a positive integer " ,
" code " : " invalid_document_limit " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_limit "
2023-01-18 15:28:02 +01:00
}
" ###);
let ( response , code ) = index . get_all_documents_raw ( " ?limit=doggo " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `limit`: could not parse `doggo` as a positive integer " ,
" code " : " invalid_document_limit " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_limit "
2023-01-18 15:28:02 +01:00
}
" ###);
let ( response , code ) = index . get_all_documents_raw ( " ?limit=-1 " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `limit`: could not parse `-1` as a positive integer " ,
" code " : " invalid_document_limit " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_limit "
2023-01-18 15:28:02 +01:00
}
" ###);
}
#[ actix_rt::test ]
async fn delete_documents_batch ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . delete_batch_raw ( json! ( " doggo " ) ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Json deserialize error: invalid type: string \" doggo \" , expected a sequence at line 1 column 7 " ,
" code " : " bad_request " ,
" type " : " invalid_request " ,
2023-01-19 15:48:20 +01:00
" link " : " https://docs.meilisearch.com/errors#bad_request "
2023-01-18 15:28:02 +01:00
}
" ###);
}
2023-02-16 13:59:58 +01:00
#[ actix_rt::test ]
async fn replace_documents_missing_payload ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_add_documents ( " " , Some ( " application/json " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A json payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
let ( response , code ) = index . raw_add_documents ( " " , Some ( " application/x-ndjson " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A ndjson payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
let ( response , code ) = index . raw_add_documents ( " " , Some ( " text/csv " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A csv payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
}
#[ actix_rt::test ]
async fn update_documents_missing_payload ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_update_documents ( " " , Some ( " application/json " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A json payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
let ( response , code ) = index . raw_update_documents ( " " , Some ( " application/x-ndjson " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A ndjson payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
let ( response , code ) = index . raw_update_documents ( " " , Some ( " text/csv " ) , " " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A csv payload is missing. " ,
" code " : " missing_payload " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_payload "
}
" ###);
}
#[ actix_rt::test ]
async fn replace_documents_missing_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_add_documents ( " " , None , " " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A Content-Type header is missing. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " missing_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_content_type "
}
" ###);
// even with a csv delimiter specified this error is triggered first
let ( response , code ) = index . raw_add_documents ( " " , None , " ?csvDelimiter=; " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A Content-Type header is missing. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " missing_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_content_type "
}
" ###);
}
#[ actix_rt::test ]
async fn update_documents_missing_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_update_documents ( " " , None , " " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A Content-Type header is missing. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " missing_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_content_type "
}
" ###);
// even with a csv delimiter specified this error is triggered first
let ( response , code ) = index . raw_update_documents ( " " , None , " ?csvDelimiter=; " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " A Content-Type header is missing. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " missing_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#missing_content_type "
}
" ###);
}
#[ actix_rt::test ]
async fn replace_documents_bad_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_add_documents ( " " , Some ( " doggo " ) , " " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `doggo` is invalid. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
}
#[ actix_rt::test ]
async fn update_documents_bad_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) = index . raw_update_documents ( " " , Some ( " doggo " ) , " " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `doggo` is invalid. Accepted values for the Content-Type header are: `application/json`, `application/x-ndjson`, `text/csv` " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
}
#[ actix_rt::test ]
async fn replace_documents_bad_csv_delimiter ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) =
index . raw_add_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `csvDelimiter`: expected a string of one character, but found an empty string " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
let ( response , code ) =
index . raw_add_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter=doggo " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `csvDelimiter`: expected a string of one character, but found the following string of 5 characters: `doggo` " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
2023-02-16 18:00:40 +01:00
let ( response , code ) = index
. raw_add_documents ( " " , Some ( " application/json " ) , & format! ( " ?csvDelimiter= {} " , encode ( " 🍰 " ) ) )
. await ;
2023-02-16 13:59:58 +01:00
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " csv delimiter must be an ascii character. Found: `🍰` " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
}
#[ actix_rt::test ]
async fn update_documents_bad_csv_delimiter ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) =
index . raw_update_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `csvDelimiter`: expected a string of one character, but found an empty string " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
let ( response , code ) =
index . raw_update_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter=doggo " ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid value in parameter `csvDelimiter`: expected a string of one character, but found the following string of 5 characters: `doggo` " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
2023-02-16 18:00:40 +01:00
let ( response , code ) = index
. raw_update_documents (
" " ,
Some ( " application/json " ) ,
& format! ( " ?csvDelimiter= {} " , encode ( " 🍰 " ) ) ,
)
. await ;
2023-02-16 13:59:58 +01:00
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " csv delimiter must be an ascii character. Found: `🍰` " ,
2023-02-22 19:26:48 +01:00
" code " : " invalid_document_csv_delimiter " ,
2023-02-16 13:59:58 +01:00
" type " : " invalid_request " ,
2023-02-22 19:26:48 +01:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_csv_delimiter "
2023-02-16 13:59:58 +01:00
}
" ###);
}
#[ actix_rt::test ]
async fn replace_documents_csv_delimiter_with_bad_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) =
index . raw_add_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter=a " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `application/json` does not support the use of a csv delimiter. The csv delimiter can only be used with the Content-Type `text/csv`. " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
let ( response , code ) =
index . raw_add_documents ( " " , Some ( " application/x-ndjson " ) , " ?csvDelimiter=a " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `application/x-ndjson` does not support the use of a csv delimiter. The csv delimiter can only be used with the Content-Type `text/csv`. " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
}
#[ actix_rt::test ]
async fn update_documents_csv_delimiter_with_bad_content_type ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " test " ) ;
let ( response , code ) =
index . raw_update_documents ( " " , Some ( " application/json " ) , " ?csvDelimiter=a " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `application/json` does not support the use of a csv delimiter. The csv delimiter can only be used with the Content-Type `text/csv`. " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
let ( response , code ) =
index . raw_update_documents ( " " , Some ( " application/x-ndjson " ) , " ?csvDelimiter=a " ) . await ;
snapshot! ( code , @ " 415 Unsupported Media Type " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " The Content-Type `application/x-ndjson` does not support the use of a csv delimiter. The csv delimiter can only be used with the Content-Type `text/csv`. " ,
" code " : " invalid_content_type " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_content_type "
}
" ###);
}
2023-04-11 19:51:17 +02:00
#[ actix_rt::test ]
async fn delete_document_by_filter ( ) {
let server = Server ::new ( ) . await ;
let index = server . index ( " doggo " ) ;
// send a bad payload type
let ( response , code ) = index . delete_document_by_filter ( json! ( " hello " ) ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
2023-04-27 19:28:05 +02:00
" message " : " Invalid value type: expected an object, but found a string: ` \" hello \" ` " ,
" code " : " bad_request " ,
2023-04-11 19:51:17 +02:00
" type " : " invalid_request " ,
2023-04-27 19:28:05 +02:00
" link " : " https://docs.meilisearch.com/errors#bad_request "
2023-04-11 19:51:17 +02:00
}
" ###);
2023-05-02 17:46:04 +02:00
// send bad payload type
let ( response , code ) = index . delete_document_by_filter ( json! ( { " filter " : true } ) ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Invalid syntax for the filter parameter: `expected String, Array, found: true`. " ,
" code " : " invalid_document_delete_filter " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_document_delete_filter "
}
" ###);
2023-04-11 19:51:17 +02:00
// send bad filter
let ( response , code ) = index . delete_document_by_filter ( json! ( { " filter " : " hello " } ) ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Was expecting an operation `=`, `!=`, `>=`, `>`, `<=`, `<`, `IN`, `NOT IN`, `TO`, `EXISTS`, `NOT EXISTS`, `_geoRadius`, or `_geoBoundingBox` at `hello`. \n 1:6 hello " ,
2023-05-02 17:46:04 +02:00
" code " : " invalid_document_delete_filter " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_document_delete_filter "
}
" ###);
// send empty filter
let ( response , code ) = index . delete_document_by_filter ( json! ( { " filter " : " " } ) ) . await ;
snapshot! ( code , @ " 400 Bad Request " ) ;
snapshot! ( json_string! ( response ) , @ r ###"
{
" message " : " Sending an empty filter is forbidden. " ,
" code " : " invalid_document_delete_filter " ,
2023-04-11 19:51:17 +02:00
" type " : " invalid_request " ,
2023-05-02 17:46:04 +02:00
" link " : " https://docs.meilisearch.com/errors#invalid_document_delete_filter "
2023-04-11 19:51:17 +02:00
}
" ###);
// index does not exists
let ( response , code ) =
index . delete_document_by_filter ( json! ( { " filter " : " doggo = bernese " } ) ) . await ;
snapshot! ( code , @ " 202 Accepted " ) ;
let response = server . wait_task ( response [ " taskUid " ] . as_u64 ( ) . unwrap ( ) ) . await ;
snapshot! ( json_string! ( response , { " .duration " = > " [duration] " , " .enqueuedAt " = > " [date] " , " .startedAt " = > " [date] " , " .finishedAt " = > " [date] " } ) , @ r ###"
{
" uid " : 0 ,
" indexUid " : " doggo " ,
" status " : " failed " ,
" type " : " documentDeletion " ,
" canceledBy " : null ,
" details " : {
" deletedDocuments " : 0 ,
" originalFilter " : " \" doggo = bernese \" "
} ,
" error " : {
" message " : " Index `doggo` not found. " ,
" code " : " index_not_found " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#index_not_found "
} ,
" duration " : " [duration] " ,
" enqueuedAt " : " [date] " ,
" startedAt " : " [date] " ,
" finishedAt " : " [date] "
}
" ###);
let ( response , code ) = index . create ( None ) . await ;
snapshot! ( code , @ " 202 Accepted " ) ;
server . wait_task ( response [ " taskUid " ] . as_u64 ( ) . unwrap ( ) ) . await ;
// no filterable are set
let ( response , code ) =
index . delete_document_by_filter ( json! ( { " filter " : " doggo = bernese " } ) ) . await ;
snapshot! ( code , @ " 202 Accepted " ) ;
let response = server . wait_task ( response [ " taskUid " ] . as_u64 ( ) . unwrap ( ) ) . await ;
snapshot! ( json_string! ( response , { " .duration " = > " [duration] " , " .enqueuedAt " = > " [date] " , " .startedAt " = > " [date] " , " .finishedAt " = > " [date] " } ) , @ r ###"
{
" uid " : 2 ,
" indexUid " : " doggo " ,
" status " : " failed " ,
" type " : " documentDeletion " ,
" canceledBy " : null ,
" details " : {
" deletedDocuments " : 0 ,
" originalFilter " : " \" doggo = bernese \" "
} ,
" error " : {
" message " : " Attribute `doggo` is not filterable. This index does not have configured filterable attributes. \n 1:6 doggo = bernese " ,
" code " : " invalid_search_filter " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_search_filter "
} ,
" duration " : " [duration] " ,
" enqueuedAt " : " [date] " ,
" startedAt " : " [date] " ,
" finishedAt " : " [date] "
}
" ###);
let ( response , code ) = index . update_settings_filterable_attributes ( json! ( [ " doggo " ] ) ) . await ;
snapshot! ( code , @ " 202 Accepted " ) ;
server . wait_task ( response [ " taskUid " ] . as_u64 ( ) . unwrap ( ) ) . await ;
// not filterable while there is a filterable attribute
let ( response , code ) =
index . delete_document_by_filter ( json! ( { " filter " : " catto = jorts " } ) ) . await ;
snapshot! ( code , @ " 202 Accepted " ) ;
let response = server . wait_task ( response [ " taskUid " ] . as_u64 ( ) . unwrap ( ) ) . await ;
snapshot! ( json_string! ( response , { " .duration " = > " [duration] " , " .enqueuedAt " = > " [date] " , " .startedAt " = > " [date] " , " .finishedAt " = > " [date] " } ) , @ r ###"
{
" uid " : 4 ,
" indexUid " : " doggo " ,
" status " : " failed " ,
" type " : " documentDeletion " ,
" canceledBy " : null ,
" details " : {
" deletedDocuments " : 0 ,
" originalFilter " : " \" catto = jorts \" "
} ,
" error " : {
" message " : " Attribute `catto` is not filterable. Available filterable attributes are: `doggo`. \n 1:6 catto = jorts " ,
" code " : " invalid_search_filter " ,
" type " : " invalid_request " ,
" link " : " https://docs.meilisearch.com/errors#invalid_search_filter "
} ,
" duration " : " [duration] " ,
" enqueuedAt " : " [date] " ,
" startedAt " : " [date] " ,
" finishedAt " : " [date] "
}
" ###);
}