From 49c8bc4de6a892a7a6b6e0edb8a5127fbe921cf8 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Wed, 7 Jun 2023 10:45:25 +0200 Subject: [PATCH] Fix tests --- meilisearch/tests/search/formatted.rs | 564 ++++++++++-------- meilisearch/tests/search/multi.rs | 4 +- milli/src/search/new/tests/attribute_fid.rs | 4 +- .../search/new/tests/attribute_position.rs | 6 +- milli/src/search/new/tests/proximity.rs | 4 +- milli/tests/assets/test_set.ndjson | 8 +- 6 files changed, 341 insertions(+), 249 deletions(-) diff --git a/meilisearch/tests/search/formatted.rs b/meilisearch/tests/search/formatted.rs index 8a40616a3..6347a90ca 100644 --- a/meilisearch/tests/search/formatted.rs +++ b/meilisearch/tests/search/formatted.rs @@ -1,3 +1,4 @@ +use insta::{allow_duplicates, assert_json_snapshot}; use serde_json::json; use super::*; @@ -18,30 +19,43 @@ async fn formatted_contain_wildcard() { |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "id": "852", - "cattos": "pésti", - }, - "_matchesPosition": {"cattos": [{"start": 0, "length": 5}]}, - }) - ); - } + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "_formatted": { + "id": "852", + "cattos": "pésti" + }, + "_matchesPosition": { + "cattos": [ + { + "start": 0, + "length": 5 + } + ] + } + } + "###); + } + } ) .await; index .search(json!({ "q": "pésti", "attributesToRetrieve": ["*"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "cattos": "pésti", - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "cattos": "pésti" + } + "###) + } }) .await; @@ -50,20 +64,29 @@ async fn formatted_contain_wildcard() { json!({ "q": "pésti", "attributesToRetrieve": ["*"], "attributesToHighlight": ["id"], "showMatchesPosition": true }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "cattos": "pésti", - "_formatted": { - "id": "852", - "cattos": "pésti", - }, - "_matchesPosition": {"cattos": [{"start": 0, "length": 5}]}, - }) - ); - } - ) + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "cattos": "pésti", + "_formatted": { + "id": "852", + "cattos": "pésti" + }, + "_matchesPosition": { + "cattos": [ + { + "start": 0, + "length": 5 + } + ] + } + } + "###) + } + }) .await; index @@ -71,17 +94,20 @@ async fn formatted_contain_wildcard() { json!({ "q": "pésti", "attributesToRetrieve": ["*"], "attributesToCrop": ["*"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "cattos": "pésti", - "_formatted": { - "id": "852", - "cattos": "pésti", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "cattos": "pésti", + "_formatted": { + "id": "852", + "cattos": "pésti" + } + } + "###); + } }, ) .await; @@ -89,17 +115,20 @@ async fn formatted_contain_wildcard() { index .search(json!({ "q": "pésti", "attributesToCrop": ["*"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "cattos": "pésti", - "_formatted": { - "id": "852", - "cattos": "pésti", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "cattos": "pésti", + "_formatted": { + "id": "852", + "cattos": "pésti" + } + } + "###) + } }) .await; } @@ -116,21 +145,24 @@ async fn format_nested() { index .search(json!({ "q": "pésti", "attributesToRetrieve": ["doggos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "doggos": [ - { - "name": "bobby", - "age": 2, - }, - { - "name": "buddy", - "age": 4, - }, - ], - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "doggos": [ + { + "name": "bobby", + "age": 2 + }, + { + "name": "buddy", + "age": 4 + } + ] + } + "###) + } }) .await; @@ -139,19 +171,22 @@ async fn format_nested() { json!({ "q": "pésti", "attributesToRetrieve": ["doggos.name"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "doggos": [ - { - "name": "bobby", - }, - { - "name": "buddy", - }, - ], - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "doggos": [ + { + "name": "bobby" + }, + { + "name": "buddy" + } + ] + } + "###) + } }, ) .await; @@ -161,20 +196,30 @@ async fn format_nested() { json!({ "q": "bobby", "attributesToRetrieve": ["doggos.name"], "showMatchesPosition": true }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "doggos": [ - { - "name": "bobby", - }, - { - "name": "buddy", - }, - ], - "_matchesPosition": {"doggos.name": [{"start": 0, "length": 5}]}, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "doggos": [ + { + "name": "bobby" + }, + { + "name": "buddy" + } + ], + "_matchesPosition": { + "doggos.name": [ + { + "start": 0, + "length": 5 + } + ] + } + } + "###) + } } ) .await; @@ -183,21 +228,24 @@ async fn format_nested() { .search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToHighlight": ["doggos.name"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "doggos": [ - { - "name": "bobby", - }, - { - "name": "buddy", - }, - ], - }, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "_formatted": { + "doggos": [ + { + "name": "bobby" + }, + { + "name": "buddy" + } + ] + } + } + "###) + } }) .await; @@ -205,21 +253,24 @@ async fn format_nested() { .search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToCrop": ["doggos.name"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "doggos": [ - { - "name": "bobby", - }, - { - "name": "buddy", - }, - ], - }, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "_formatted": { + "doggos": [ + { + "name": "bobby" + }, + { + "name": "buddy" + } + ] + } + } + "###) + } }) .await; @@ -227,55 +278,61 @@ async fn format_nested() { .search(json!({ "q": "pésti", "attributesToRetrieve": ["doggos.name"], "attributesToHighlight": ["doggos.age"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "doggos": [ - { - "name": "bobby", - }, - { - "name": "buddy", - }, - ], - "_formatted": { - "doggos": [ - { - "name": "bobby", - "age": "2", - }, - { - "name": "buddy", - "age": "4", - }, - ], + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "doggos": [ + { + "name": "bobby" }, - }) - ); - }) + { + "name": "buddy" + } + ], + "_formatted": { + "doggos": [ + { + "name": "bobby", + "age": "2" + }, + { + "name": "buddy", + "age": "4" + } + ] + } + } + "###) + } + }) .await; index .search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToHighlight": ["doggos.age"], "attributesToCrop": ["doggos.name"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "doggos": [ + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" { - "name": "bobby", - "age": "2", - }, - { - "name": "buddy", - "age": "4", - }, - ], - }, - }) - ); + "_formatted": { + "doggos": [ + { + "name": "bobby", + "age": "2" + }, + { + "name": "buddy", + "age": "4" + } + ] + } + } + "###) + } } ) .await; @@ -297,54 +354,66 @@ async fn displayedattr_2_smol() { .search(json!({ "attributesToRetrieve": ["father", "id"], "attributesToHighlight": ["mother"], "attributesToCrop": ["cattos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852 + } + "###) + } }) .await; index .search(json!({ "attributesToRetrieve": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852 + } + "###) + } }) .await; index .search(json!({ "attributesToHighlight": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "_formatted": { - "id": "852", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "_formatted": { + "id": "852" + } + } + "###) + } }) .await; index .search(json!({ "attributesToCrop": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "_formatted": { - "id": "852", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "_formatted": { + "id": "852" + } + } + "###) + } }) .await; @@ -353,15 +422,18 @@ async fn displayedattr_2_smol() { json!({ "attributesToHighlight": ["id"], "attributesToCrop": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - "_formatted": { - "id": "852", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852, + "_formatted": { + "id": "852" + } + } + "###) + } }, ) .await; @@ -369,31 +441,41 @@ async fn displayedattr_2_smol() { index .search(json!({ "attributesToHighlight": ["cattos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852 + } + "###) + } }) .await; index .search(json!({ "attributesToCrop": ["cattos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "id": 852, - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "id": 852 + } + "###) + } }) .await; index .search(json!({ "attributesToRetrieve": ["cattos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!(response["hits"][0], json!({})); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @"{}") + } }) .await; @@ -402,7 +484,11 @@ async fn displayedattr_2_smol() { json!({ "attributesToRetrieve": ["cattos"], "attributesToHighlight": ["cattos"], "attributesToCrop": ["cattos"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!(response["hits"][0], json!({})); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @"{}") + } } ) @@ -413,14 +499,17 @@ async fn displayedattr_2_smol() { json!({ "attributesToRetrieve": ["cattos"], "attributesToHighlight": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "id": "852", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "_formatted": { + "id": "852" + } + } + "###) + } }, ) .await; @@ -430,14 +519,17 @@ async fn displayedattr_2_smol() { json!({ "attributesToRetrieve": ["cattos"], "attributesToCrop": ["id"] }), |response, code| { assert_eq!(code, 200, "{}", response); - assert_eq!( - response["hits"][0], - json!({ - "_formatted": { - "id": "852", - } - }) - ); + allow_duplicates! { + assert_json_snapshot!(response["hits"][0], + { "._rankingScore" => "[score]" }, + @r###" + { + "_formatted": { + "id": "852" + } + } + "###) + } }, ) .await; diff --git a/meilisearch/tests/search/multi.rs b/meilisearch/tests/search/multi.rs index b00ddf3de..7cff42f3d 100644 --- a/meilisearch/tests/search/multi.rs +++ b/meilisearch/tests/search/multi.rs @@ -65,7 +65,7 @@ async fn simple_search_single_index() { ]})) .await; snapshot!(code, @"200 OK"); - insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]" }, @r###" + insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]", ".**._rankingScore" => "[score]" }, @r###" [ { "indexUid": "test", @@ -170,7 +170,7 @@ async fn simple_search_two_indexes() { ]})) .await; snapshot!(code, @"200 OK"); - insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]" }, @r###" + insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]", ".**._rankingScore" => "[score]" }, @r###" [ { "indexUid": "test", diff --git a/milli/src/search/new/tests/attribute_fid.rs b/milli/src/search/new/tests/attribute_fid.rs index 177dc393a..132595a35 100644 --- a/milli/src/search/new/tests/attribute_fid.rs +++ b/milli/src/search/new/tests/attribute_fid.rs @@ -123,7 +123,7 @@ fn test_attribute_fid_simple() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("the quick brown fox jumps over the lazy dog"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 7, 8, 11, 10, 12, 13, 14, 0]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]"); } #[test] @@ -136,5 +136,5 @@ fn test_attribute_fid_ngrams() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("the quick brown fox jumps over the lazy dog"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 7, 8, 11, 10, 12, 13, 14, 0]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]"); } diff --git a/milli/src/search/new/tests/attribute_position.rs b/milli/src/search/new/tests/attribute_position.rs index 37f303b10..5bbb5b117 100644 --- a/milli/src/search/new/tests/attribute_position.rs +++ b/milli/src/search/new/tests/attribute_position.rs @@ -138,7 +138,7 @@ fn test_attribute_position_simple() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("quick brown"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]"); } #[test] fn test_attribute_position_repeated() { @@ -163,7 +163,7 @@ fn test_attribute_position_different_fields() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("quick brown"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]"); } #[test] @@ -176,5 +176,5 @@ fn test_attribute_position_ngrams() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("quick brown"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]"); } diff --git a/milli/src/search/new/tests/proximity.rs b/milli/src/search/new/tests/proximity.rs index 6e4181a95..5b369714c 100644 --- a/milli/src/search/new/tests/proximity.rs +++ b/milli/src/search/new/tests/proximity.rs @@ -270,13 +270,13 @@ fn test_proximity_simple() { s.terms_matching_strategy(TermsMatchingStrategy::All); s.query("the quick brown fox jumps over the lazy dog"); let SearchResult { documents_ids, .. } = s.execute().unwrap(); - insta::assert_snapshot!(format!("{documents_ids:?}"), @"[4, 9, 10, 7, 6, 5, 2, 3, 0, 1]"); + insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 10, 4, 7, 6, 5, 2, 3, 0, 1]"); let texts = collect_field_values(&index, &txn, "text", &documents_ids); insta::assert_debug_snapshot!(texts, @r###" [ - "\"the quickbrown fox jumps over the lazy dog\"", "\"the quack brown fox jumps over the lazy dog\"", "\"the quick brown fox jumps over the lazy dog\"", + "\"the quickbrown fox jumps over the lazy dog\"", "\"the really quick brown fox jumps over the lazy dog\"", "\"the really quick brown fox jumps over the very lazy dog\"", "\"brown quick fox jumps over the lazy dog\"", diff --git a/milli/tests/assets/test_set.ndjson b/milli/tests/assets/test_set.ndjson index 175d9b3ce..351aac417 100644 --- a/milli/tests/assets/test_set.ndjson +++ b/milli/tests/assets/test_set.ndjson @@ -68,7 +68,7 @@ "word_rank": 0, "typo_rank": 1, "proximity_rank": 16, - "attribute_rank": 208, + "attribute_rank": 209, "exact_rank": 5, "asc_desc_rank": 3, "sort_by_rank": 2, @@ -155,7 +155,7 @@ "word_rank": 1, "typo_rank": 0, "proximity_rank": 1, - "attribute_rank": 1, + "attribute_rank": 2, "exact_rank": 3, "asc_desc_rank": 4, "sort_by_rank": 1, @@ -199,7 +199,7 @@ "word_rank": 1, "typo_rank": 0, "proximity_rank": 1, - "attribute_rank": 2, + "attribute_rank": 1, "exact_rank": 3, "asc_desc_rank": 2, "sort_by_rank": 1, @@ -220,7 +220,7 @@ "word_rank": 0, "typo_rank": 2, "proximity_rank": 10, - "attribute_rank": 209, + "attribute_rank": 208, "exact_rank": 6, "asc_desc_rank": 1, "sort_by_rank": 2,