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", | ||||
|  "oxidized-json-checker", | ||||
|  "parking_lot", | ||||
|  "paste", | ||||
|  "rand 0.7.3", | ||||
|  "rayon", | ||||
|  "regex", | ||||
| @@ -2025,6 +2026,12 @@ dependencies = [ | ||||
|  "winapi 0.3.9", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "paste" | ||||
| version = "1.0.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" | ||||
|  | ||||
| [[package]] | ||||
| name = "percent-encoding" | ||||
| version = "2.1.0" | ||||
|   | ||||
| @@ -84,6 +84,7 @@ version = "0.18.1" | ||||
| actix-rt = "2.1.0" | ||||
| assert-json-diff = { branch = "master", git = "https://github.com/qdequele/assert-json-diff" } | ||||
| mockall = "0.9.1" | ||||
| paste = "1.0.5" | ||||
| serde_url_params = "0.2.0" | ||||
| tempdir = "0.3.7" | ||||
| urlencoding = "1.1.1" | ||||
|   | ||||
| @@ -1,16 +1,34 @@ | ||||
| use std::time::Duration; | ||||
|  | ||||
| use actix_web::http::StatusCode; | ||||
| use paste::paste; | ||||
| use serde_json::{json, Value}; | ||||
| use tokio::time::sleep; | ||||
|  | ||||
| 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 uid: String, | ||||
|     pub service: &'a Service, | ||||
| } | ||||
|  | ||||
| #[allow(dead_code)] | ||||
| impl Index<'_> { | ||||
|     pub async fn get(&self) -> (Value, StatusCode) { | ||||
|         let url = format!("/indexes/{}", self.uid); | ||||
| @@ -166,8 +184,13 @@ impl Index<'_> { | ||||
|         let url = format!("/indexes/{}/stats", self.uid); | ||||
|         self.service.get(url).await | ||||
|     } | ||||
|  | ||||
|     make_settings_test_routes!( | ||||
|         distinct_attribute | ||||
|     ); | ||||
| } | ||||
|  | ||||
|  | ||||
| pub struct GetDocumentOptions; | ||||
|  | ||||
| #[derive(Debug, Default)] | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| use crate::common::Server; | ||||
| use serde_json::{json, Value}; | ||||
| use serde_json::json; | ||||
|  | ||||
| #[actix_rt::test] | ||||
| async fn set_and_reset_distinct_attribute() { | ||||
| @@ -13,11 +13,32 @@ async fn set_and_reset_distinct_attribute() { | ||||
|  | ||||
|     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; | ||||
|  | ||||
|     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["searchableAttributes"], json!(["*"])); | ||||
|     assert_eq!(settings["attributesForFaceting"], json!({})); | ||||
|     assert_eq!(settings["distinctAttribute"], serde_json::Value::Null); | ||||
|     assert_eq!(settings["distinctAttribute"], json!(null)); | ||||
|     assert_eq!( | ||||
|         settings["rankingRules"], | ||||
|         json!([ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user