From 0f727d079b0d21a6e00c2e4279de131a178a31cd Mon Sep 17 00:00:00 2001 From: Tamo Date: Wed, 18 Jan 2023 12:28:46 +0100 Subject: [PATCH] fix the wrong error code on minWordSizeForTypos --- dump/src/reader/compat/v5_to_v6.rs | 2 +- meilisearch-types/src/error.rs | 3 +-- meilisearch-types/src/settings.rs | 6 +++--- meilisearch/tests/settings/errors.rs | 27 +++++++++++++++++++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/dump/src/reader/compat/v5_to_v6.rs b/dump/src/reader/compat/v5_to_v6.rs index 237381414..8d345be45 100644 --- a/dump/src/reader/compat/v5_to_v6.rs +++ b/dump/src/reader/compat/v5_to_v6.rs @@ -260,7 +260,7 @@ impl From for v6::ResponseError { "index_already_exists" => v6::Code::IndexAlreadyExists, "index_not_found" => v6::Code::IndexNotFound, "invalid_index_uid" => v6::Code::InvalidIndexUid, - "invalid_min_word_length_for_typo" => v6::Code::InvalidMinWordLengthForTypo, + "invalid_min_word_length_for_typo" => v6::Code::InvalidSettingsTypoTolerance, "invalid_state" => v6::Code::InvalidState, "primary_key_inference_failed" => v6::Code::IndexPrimaryKeyNoCandidateFound, "index_primary_key_already_exists" => v6::Code::IndexPrimaryKeyAlreadyExists, diff --git a/meilisearch-types/src/error.rs b/meilisearch-types/src/error.rs index 21c079678..bf38bb14f 100644 --- a/meilisearch-types/src/error.rs +++ b/meilisearch-types/src/error.rs @@ -224,7 +224,6 @@ InvalidIndexLimit , InvalidRequest , BAD_REQUEST ; InvalidIndexOffset , InvalidRequest , BAD_REQUEST ; InvalidIndexPrimaryKey , InvalidRequest , BAD_REQUEST ; InvalidIndexUid , InvalidRequest , BAD_REQUEST ; -InvalidMinWordLengthForTypo , InvalidRequest , BAD_REQUEST ; InvalidSearchAttributesToCrop , InvalidRequest , BAD_REQUEST ; InvalidSearchAttributesToHighlight , InvalidRequest , BAD_REQUEST ; InvalidSearchAttributesToRetrieve , InvalidRequest , BAD_REQUEST ; @@ -334,7 +333,7 @@ impl ErrorCode for milli::Error { UserError::InvalidGeoField { .. } => Code::InvalidDocumentGeoField, UserError::SortError(_) => Code::InvalidSearchSort, UserError::InvalidMinTypoWordLenSetting(_, _) => { - Code::InvalidMinWordLengthForTypo + Code::InvalidSettingsTypoTolerance } } } diff --git a/meilisearch-types/src/settings.rs b/meilisearch-types/src/settings.rs index 57899a9d1..b4ab1eff6 100644 --- a/meilisearch-types/src/settings.rs +++ b/meilisearch-types/src/settings.rs @@ -67,7 +67,7 @@ fn validate_min_word_size_for_typo_setting( #[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq, DeserializeFromValue)] #[serde(deny_unknown_fields, rename_all = "camelCase")] -#[deserr(deny_unknown_fields, rename_all = camelCase, validate = validate_min_word_size_for_typo_setting -> DeserrJsonError)] +#[deserr(deny_unknown_fields, rename_all = camelCase, validate = validate_min_word_size_for_typo_setting -> DeserrJsonError)] pub struct MinWordSizeTyposSetting { #[serde(default, skip_serializing_if = "Setting::is_not_set")] #[deserr(default)] @@ -79,13 +79,13 @@ pub struct MinWordSizeTyposSetting { #[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq, DeserializeFromValue)] #[serde(deny_unknown_fields, rename_all = "camelCase")] -#[deserr(deny_unknown_fields, rename_all = camelCase, where_predicate = __Deserr_E: deserr::MergeWithError>)] +#[deserr(deny_unknown_fields, rename_all = camelCase, where_predicate = __Deserr_E: deserr::MergeWithError>)] pub struct TypoSettings { #[serde(default, skip_serializing_if = "Setting::is_not_set")] #[deserr(default)] pub enabled: Setting, #[serde(default, skip_serializing_if = "Setting::is_not_set")] - #[deserr(default, error = DeserrJsonError)] + #[deserr(default, error = DeserrJsonError)] pub min_word_size_for_typos: Setting, #[serde(default, skip_serializing_if = "Setting::is_not_set")] #[deserr(default)] diff --git a/meilisearch/tests/settings/errors.rs b/meilisearch/tests/settings/errors.rs index a3deeccfb..b4bdb27ca 100644 --- a/meilisearch/tests/settings/errors.rs +++ b/meilisearch/tests/settings/errors.rs @@ -243,6 +243,18 @@ async fn settings_bad_typo_tolerance() { } "###); + let (response, code) = + index.update_settings(json!({ "typoTolerance": { "minWordSizeForTypos": "doggo" }})).await; + snapshot!(code, @"400 Bad Request"); + snapshot!(json_string!(response), @r###" + { + "message": "Invalid value type at `.typoTolerance.minWordSizeForTypos`: expected an object, but found a string: `\"doggo\"`", + "code": "invalid_settings_typo_tolerance", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#invalid-settings-typo-tolerance" + } + "###); + let (response, code) = index.update_settings_typo_tolerance(json!("doggo")).await; snapshot!(code, @"400 Bad Request"); snapshot!(json_string!(response), @r###" @@ -253,6 +265,21 @@ async fn settings_bad_typo_tolerance() { "link": "https://docs.meilisearch.com/errors#invalid-settings-typo-tolerance" } "###); + + let (response, code) = index + .update_settings_typo_tolerance( + json!({ "typoTolerance": { "minWordSizeForTypos": "doggo" }}), + ) + .await; + snapshot!(code, @"400 Bad Request"); + snapshot!(json_string!(response), @r###" + { + "message": "Unknown field `typoTolerance`: expected one of `enabled`, `minWordSizeForTypos`, `disableOnWords`, `disableOnAttributes`", + "code": "invalid_settings_typo_tolerance", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#invalid-settings-typo-tolerance" + } + "###); } #[actix_rt::test]