mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-30 09:04:59 +08:00
test get add documents
This commit is contained in:
parent
ba2cfcc72d
commit
ec9dcd3285
210
tests/documents/add_documents.rs
Normal file
210
tests/documents/add_documents.rs
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
use serde_json::{json, Value};
|
||||||
|
use chrono::DateTime;
|
||||||
|
|
||||||
|
use crate::common::Server;
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn add_documents_no_index_creation() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"content": "foo",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (response, code) = index.add_documents(documents, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "pending");
|
||||||
|
assert_eq!(response["updateId"], 0);
|
||||||
|
assert_eq!(response["meta"]["type"], "DocumentsAddition");
|
||||||
|
assert_eq!(response["meta"]["format"], "Json");
|
||||||
|
assert_eq!(response["meta"]["primaryKey"], Value::Null);
|
||||||
|
assert!(response.get("enqueuedAt").is_some());
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
|
||||||
|
let (response, code) = index.get_update(0).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
println!("response: {}", response);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
assert_eq!(response["updateId"], 0);
|
||||||
|
assert_eq!(response["success"]["DocumentsAddition"]["nb_documents"], 1);
|
||||||
|
|
||||||
|
let processed_at = DateTime::parse_from_rfc3339(response["processedAt"].as_str().unwrap()).unwrap();
|
||||||
|
let enqueued_at = DateTime::parse_from_rfc3339(response["enqueuedAt"].as_str().unwrap()).unwrap();
|
||||||
|
let started_processing_at = DateTime::parse_from_rfc3339(response["startedProcessingAt"].as_str().unwrap()).unwrap();
|
||||||
|
assert!(processed_at > started_processing_at);
|
||||||
|
assert!(started_processing_at > enqueued_at);
|
||||||
|
|
||||||
|
// index was created, and primary key was infered.
|
||||||
|
let (response, code) = index.get().await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["primaryKey"], "id");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn document_addition_with_primary_key() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"primary": 1,
|
||||||
|
"content": "foo",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
let (_response, code) = index.add_documents(documents, Some("primary")).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
|
||||||
|
let (response, code) = index.get_update(0).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
assert_eq!(response["updateId"], 0);
|
||||||
|
assert_eq!(response["success"]["DocumentsAddition"]["nb_documents"], 1);
|
||||||
|
|
||||||
|
let (response, code) = index.get().await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["primaryKey"], "primary");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn add_documents_with_primary_key_and_primary_key_already_exists() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
|
||||||
|
index.create(Some("primary")).await;
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"content": "foo",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (_response, code) = index.add_documents(documents, Some("id")).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
|
||||||
|
let (response, code) = index.get_update(0).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
assert_eq!(response["updateId"], 0);
|
||||||
|
assert_eq!(response["success"]["DocumentsAddition"]["nb_documents"], 1);
|
||||||
|
|
||||||
|
let (response, code) = index.get().await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["primaryKey"], "primary");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn replace_document() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"doc_id": 1,
|
||||||
|
"content": "foo",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (_response, code) = index.add_documents(documents, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"doc_id": 1,
|
||||||
|
"other": "bar",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (_response, code) = index.add_documents(documents, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(1).await;
|
||||||
|
|
||||||
|
let (response, code) = index.get_update(1).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
|
||||||
|
let (response, code) = index.get_document(1, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response.to_string(), r##"{"doc_id":1,"other":"bar"}"##);
|
||||||
|
}
|
||||||
|
|
||||||
|
// test broken, see issue milli#92
|
||||||
|
#[actix_rt::test]
|
||||||
|
#[ignore]
|
||||||
|
async fn add_no_documents() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
let (_response, code) = index.add_documents(json!([]), None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
let (response, code) = index.get_update(0).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
assert_eq!(response["updateId"], 0);
|
||||||
|
assert_eq!(response["success"]["DocumentsAddition"]["nb_documents"], 0);
|
||||||
|
|
||||||
|
let (response, code) = index.get().await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["primaryKey"], Value::Null);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn update_document() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"doc_id": 1,
|
||||||
|
"content": "foo",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (_response, code) = index.add_documents(documents, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(0).await;
|
||||||
|
|
||||||
|
let documents = json!([
|
||||||
|
{
|
||||||
|
"doc_id": 1,
|
||||||
|
"other": "bar",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
let (_response, code) = index.update_documents(documents, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
|
||||||
|
index.wait_update_id(1).await;
|
||||||
|
|
||||||
|
let (response, code) = index.get_update(1).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
|
||||||
|
let (response, code) = index.get_document(1, None).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response.to_string(), r##"{"doc_id":1,"content":"foo","other":"bar"}"##);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn add_larger_dataset() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("test");
|
||||||
|
let update_id = index.load_test_set().await;
|
||||||
|
let (response, code) = index.get_update(update_id).await;
|
||||||
|
assert_eq!(code, 200);
|
||||||
|
assert_eq!(response["status"], "processed");
|
||||||
|
assert_eq!(response["success"]["DocumentsAddition"]["nb_documents"], 77);
|
||||||
|
}
|
24
tests/documents/get_documents.rs
Normal file
24
tests/documents/get_documents.rs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
use crate::common::Server;
|
||||||
|
use crate::common::GetAllDocumentsOptions;
|
||||||
|
|
||||||
|
// TODO: partial test since we are testing error, amd error is not yet fully implemented in
|
||||||
|
// transplant
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn get_unexisting_index_single_document() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let (_response, code) = server
|
||||||
|
.index("test")
|
||||||
|
.get_document(1, None)
|
||||||
|
.await;
|
||||||
|
assert_eq!(code, 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn get_unexisting_index_all_documents() {
|
||||||
|
let server = Server::new().await;
|
||||||
|
let (_response, code) = server
|
||||||
|
.index("test")
|
||||||
|
.get_all_documents(GetAllDocumentsOptions::default())
|
||||||
|
.await;
|
||||||
|
assert_eq!(code, 400);
|
||||||
|
}
|
2
tests/documents/mod.rs
Normal file
2
tests/documents/mod.rs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mod add_documents;
|
||||||
|
mod get_documents;
|
Loading…
Reference in New Issue
Block a user