mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-31 16:06:31 +00:00 
			
		
		
		
	add test for dedicated distinct route
This commit is contained in:
		
							
								
								
									
										7
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @@ -1664,6 +1664,7 @@ dependencies = [ | |||||||
|  "once_cell", |  "once_cell", | ||||||
|  "oxidized-json-checker", |  "oxidized-json-checker", | ||||||
|  "parking_lot", |  "parking_lot", | ||||||
|  |  "paste", | ||||||
|  "rand 0.7.3", |  "rand 0.7.3", | ||||||
|  "rayon", |  "rayon", | ||||||
|  "regex", |  "regex", | ||||||
| @@ -2025,6 +2026,12 @@ dependencies = [ | |||||||
|  "winapi 0.3.9", |  "winapi 0.3.9", | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "paste" | ||||||
|  | version = "1.0.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "percent-encoding" | name = "percent-encoding" | ||||||
| version = "2.1.0" | version = "2.1.0" | ||||||
|   | |||||||
| @@ -84,6 +84,7 @@ version = "0.18.1" | |||||||
| actix-rt = "2.1.0" | actix-rt = "2.1.0" | ||||||
| assert-json-diff = { branch = "master", git = "https://github.com/qdequele/assert-json-diff" } | assert-json-diff = { branch = "master", git = "https://github.com/qdequele/assert-json-diff" } | ||||||
| mockall = "0.9.1" | mockall = "0.9.1" | ||||||
|  | paste = "1.0.5" | ||||||
| serde_url_params = "0.2.0" | serde_url_params = "0.2.0" | ||||||
| tempdir = "0.3.7" | tempdir = "0.3.7" | ||||||
| urlencoding = "1.1.1" | urlencoding = "1.1.1" | ||||||
|   | |||||||
| @@ -1,16 +1,34 @@ | |||||||
| use std::time::Duration; | use std::time::Duration; | ||||||
|  |  | ||||||
| use actix_web::http::StatusCode; | use actix_web::http::StatusCode; | ||||||
|  | use paste::paste; | ||||||
| use serde_json::{json, Value}; | use serde_json::{json, Value}; | ||||||
| use tokio::time::sleep; | use tokio::time::sleep; | ||||||
|  |  | ||||||
| use super::service::Service; | use super::service::Service; | ||||||
|  |  | ||||||
|  | macro_rules! make_settings_test_routes { | ||||||
|  |     ($($name:ident),+) => { | ||||||
|  |         $(paste! { | ||||||
|  |             pub async fn [<update_$name>](&self, value: Value) -> (Value, StatusCode) { | ||||||
|  |                 let url = format!("/indexes/{}/settings/{}", self.uid, stringify!($name).replace("_", "-")); | ||||||
|  |                 self.service.post(url, value).await | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             pub async fn [<get_$name>](&self) -> (Value, StatusCode) { | ||||||
|  |                 let url = format!("/indexes/{}/settings/{}", self.uid, stringify!($name).replace("_", "-")); | ||||||
|  |                 self.service.get(url).await | ||||||
|  |             } | ||||||
|  |         })* | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  |  | ||||||
| pub struct Index<'a> { | pub struct Index<'a> { | ||||||
|     pub uid: String, |     pub uid: String, | ||||||
|     pub service: &'a Service, |     pub service: &'a Service, | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #[allow(dead_code)] | ||||||
| impl Index<'_> { | impl Index<'_> { | ||||||
|     pub async fn get(&self) -> (Value, StatusCode) { |     pub async fn get(&self) -> (Value, StatusCode) { | ||||||
|         let url = format!("/indexes/{}", self.uid); |         let url = format!("/indexes/{}", self.uid); | ||||||
| @@ -166,8 +184,13 @@ impl Index<'_> { | |||||||
|         let url = format!("/indexes/{}/stats", self.uid); |         let url = format!("/indexes/{}/stats", self.uid); | ||||||
|         self.service.get(url).await |         self.service.get(url).await | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     make_settings_test_routes!( | ||||||
|  |         distinct_attribute | ||||||
|  |     ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| pub struct GetDocumentOptions; | pub struct GetDocumentOptions; | ||||||
|  |  | ||||||
| #[derive(Debug, Default)] | #[derive(Debug, Default)] | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| use crate::common::Server; | use crate::common::Server; | ||||||
| use serde_json::{json, Value}; | use serde_json::json; | ||||||
|  |  | ||||||
| #[actix_rt::test] | #[actix_rt::test] | ||||||
| async fn set_and_reset_distinct_attribute() { | async fn set_and_reset_distinct_attribute() { | ||||||
| @@ -13,11 +13,32 @@ async fn set_and_reset_distinct_attribute() { | |||||||
|  |  | ||||||
|     assert_eq!(response["distinctAttribute"], "test"); |     assert_eq!(response["distinctAttribute"], "test"); | ||||||
|  |  | ||||||
|     index.update_settings(json!({ "distinctAttribute": Value::Null })).await; |     index.update_settings(json!({ "distinctAttribute": null })).await; | ||||||
|  |  | ||||||
|     index.wait_update_id(1).await; |     index.wait_update_id(1).await; | ||||||
|  |  | ||||||
|     let (response, _) = index.settings().await; |     let (response, _) = index.settings().await; | ||||||
|  |  | ||||||
|     assert_eq!(response["distinctAttribute"], Value::Null); |     assert_eq!(response["distinctAttribute"], json!(null)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[actix_rt::test] | ||||||
|  | async fn set_and_reset_distinct_attribute_with_dedicated_route() { | ||||||
|  |     let server = Server::new().await; | ||||||
|  |     let index = server.index("test"); | ||||||
|  |  | ||||||
|  |     let (_response, _code) = index.update_distinct_attribute(json!("test")).await; | ||||||
|  |     index.wait_update_id(0).await; | ||||||
|  |  | ||||||
|  |     let (response, _) = index.get_distinct_attribute().await; | ||||||
|  |  | ||||||
|  |     assert_eq!(response, "test"); | ||||||
|  |  | ||||||
|  |     index.update_distinct_attribute(json!(null)).await; | ||||||
|  |  | ||||||
|  |     index.wait_update_id(1).await; | ||||||
|  |  | ||||||
|  |     let (response, _) = index.get_distinct_attribute().await; | ||||||
|  |  | ||||||
|  |     assert_eq!(response, json!(null)); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ async fn get_settings() { | |||||||
|     assert_eq!(settings["displayedAttributes"], json!(["*"])); |     assert_eq!(settings["displayedAttributes"], json!(["*"])); | ||||||
|     assert_eq!(settings["searchableAttributes"], json!(["*"])); |     assert_eq!(settings["searchableAttributes"], json!(["*"])); | ||||||
|     assert_eq!(settings["attributesForFaceting"], json!({})); |     assert_eq!(settings["attributesForFaceting"], json!({})); | ||||||
|     assert_eq!(settings["distinctAttribute"], serde_json::Value::Null); |     assert_eq!(settings["distinctAttribute"], json!(null)); | ||||||
|     assert_eq!( |     assert_eq!( | ||||||
|         settings["rankingRules"], |         settings["rankingRules"], | ||||||
|         json!([ |         json!([ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user