mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-30 00:55:00 +08:00
test document addition
This commit is contained in:
parent
b293948d36
commit
b1226be2c8
@ -42,6 +42,7 @@ impl<M> Pending<M> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Processed<M, N> {
|
pub struct Processed<M, N> {
|
||||||
pub success: N,
|
pub success: N,
|
||||||
pub processed_at: DateTime<Utc>,
|
pub processed_at: DateTime<Utc>,
|
||||||
@ -56,6 +57,7 @@ impl<M, N> Processed<M, N> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Processing<M> {
|
pub struct Processing<M> {
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub from: Pending<M>,
|
pub from: Pending<M>,
|
||||||
@ -89,6 +91,7 @@ impl<M> Processing<M> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Aborted<M> {
|
pub struct Aborted<M> {
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
from: Pending<M>,
|
from: Pending<M>,
|
||||||
@ -102,6 +105,7 @@ impl<M> Aborted<M> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
#[derive(Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Clone)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Failed<M, E> {
|
pub struct Failed<M, E> {
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
from: Processing<M>,
|
from: Processing<M>,
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
use actix_web::http::StatusCode;
|
use actix_web::http::StatusCode;
|
||||||
use serde_json::{json, Value};
|
use serde_json::{json, Value};
|
||||||
|
use tokio::time::delay_for;
|
||||||
|
|
||||||
use super::service::Service;
|
use super::service::Service;
|
||||||
|
|
||||||
@ -14,10 +17,7 @@ impl Index<'_> {
|
|||||||
self.service.get(url).await
|
self.service.get(url).await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create<'a>(
|
pub async fn create<'a>(&'a self, primary_key: Option<&str>) -> (Value, StatusCode) {
|
||||||
&'a self,
|
|
||||||
primary_key: Option<&str>,
|
|
||||||
) -> (Value, StatusCode) {
|
|
||||||
let body = json!({
|
let body = json!({
|
||||||
"uid": self.uid,
|
"uid": self.uid,
|
||||||
"primaryKey": primary_key,
|
"primaryKey": primary_key,
|
||||||
@ -38,4 +38,43 @@ impl Index<'_> {
|
|||||||
let url = format!("/indexes/{}", self.uid);
|
let url = format!("/indexes/{}", self.uid);
|
||||||
self.service.delete(url).await
|
self.service.delete(url).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn add_documents(
|
||||||
|
&self,
|
||||||
|
documents: Value,
|
||||||
|
primary_key: Option<&str>,
|
||||||
|
) -> (Value, StatusCode) {
|
||||||
|
let url = match primary_key {
|
||||||
|
Some(key) => format!("/indexes/{}/documents?primaryKey={}", self.uid, key),
|
||||||
|
None => format!("/indexes/{}/documents", self.uid),
|
||||||
|
};
|
||||||
|
self.service.post(url, documents).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn wait_update_id(&self, update_id: u64) {
|
||||||
|
// try 10 times to get status, or panic to not wait forever
|
||||||
|
let url = format!("/indexes/{}/updates/{}", self.uid, update_id);
|
||||||
|
for _ in 0..10 {
|
||||||
|
let (response, status_code) = self.service.get(&url).await;
|
||||||
|
assert_eq!(status_code, 200);
|
||||||
|
|
||||||
|
if response["status"] == "processed" || response["status"] == "failed" {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
delay_for(Duration::from_secs(1)).await;
|
||||||
|
}
|
||||||
|
panic!("Timeout waiting for update id");
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_update(&self, udpate_id: usize) -> (Value, StatusCode) {
|
||||||
|
let url = format!("/indexes/{}/updates/{}", self.uid, udpate_id);
|
||||||
|
self.service.get(url).await
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub async fn list_updates(&self) -> (Value, StatusCode) {
|
||||||
|
let url = format!("/indexes/{}/updates", self.uid);
|
||||||
|
self.service.get(url).await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,5 +64,6 @@ impl Service {
|
|||||||
let response = serde_json::from_slice(&body).unwrap_or_default();
|
let response = serde_json::from_slice(&body).unwrap_or_default();
|
||||||
(response, status_code)
|
(response, status_code)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
mod common;
|
mod common;
|
||||||
mod search;
|
|
||||||
mod index;
|
mod index;
|
||||||
|
mod search;
|
||||||
|
mod settings;
|
||||||
|
mod documents;
|
||||||
|
|
||||||
// Tests are isolated by features in different modules to allow better readability, test
|
// Tests are isolated by features in different modules to allow better readability, test
|
||||||
// targetability, and improved incremental compilation times.
|
// targetability, and improved incremental compilation times.
|
||||||
|
Loading…
Reference in New Issue
Block a user