mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-07-27 08:41:00 +00:00
Add tests
This commit is contained in:
@ -554,3 +554,101 @@ async fn fields() {
|
|||||||
}
|
}
|
||||||
"#);
|
"#);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn document_not_found() {
|
||||||
|
let index = shared_index_for_fragments().await;
|
||||||
|
|
||||||
|
let (value, code) = index
|
||||||
|
.render(json! {{
|
||||||
|
"template": { "id": "embedders.rest.indexingFragments.basic" },
|
||||||
|
"input": { "documentId": "9999" }
|
||||||
|
}})
|
||||||
|
.await;
|
||||||
|
snapshot!(code, @"404 Not Found");
|
||||||
|
snapshot!(value, @r#"
|
||||||
|
{
|
||||||
|
"message": "Document with ID `9999` not found.",
|
||||||
|
"code": "render_document_not_found",
|
||||||
|
"type": "invalid_request",
|
||||||
|
"link": "https://docs.meilisearch.com/errors#render_document_not_found"
|
||||||
|
}
|
||||||
|
"#);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn bad_template() {
|
||||||
|
let index = shared_index_for_fragments().await;
|
||||||
|
|
||||||
|
let (value, code) = index
|
||||||
|
.render(json! {{
|
||||||
|
"template": { "inline": "{{ doc.name" },
|
||||||
|
"input": { "documentId": "0" }
|
||||||
|
}})
|
||||||
|
.await;
|
||||||
|
snapshot!(code, @"400 Bad Request");
|
||||||
|
snapshot!(value, @r#"
|
||||||
|
{
|
||||||
|
"message": "Error parsing template: error while parsing template: liquid: --> 1:4\n |\n1 | {{ doc.name\n | ^---\n |\n = expected Literal\n",
|
||||||
|
"code": "template_parsing_error",
|
||||||
|
"type": "invalid_request",
|
||||||
|
"link": "https://docs.meilisearch.com/errors#template_parsing_error"
|
||||||
|
}
|
||||||
|
"#);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn inline_nested() {
|
||||||
|
let index = shared_index_for_fragments().await;
|
||||||
|
|
||||||
|
let (value, code) = index
|
||||||
|
.render(json! {{
|
||||||
|
"template": { "inline": "{{ doc.name }} is a {{ doc.breed.name }} ({{ doc.breed.kind }})" },
|
||||||
|
"input": { "inline": { "doc": { "name": "iko", "breed": { "name": "jack russell", "kind": "terrier" } } } }
|
||||||
|
}})
|
||||||
|
.await;
|
||||||
|
snapshot!(code, @"200 OK");
|
||||||
|
snapshot!(value, @r#"
|
||||||
|
{
|
||||||
|
"template": "{{ doc.name }} is a {{ doc.breed.name }} ({{ doc.breed.kind }})",
|
||||||
|
"rendered": "iko is a jack russell (terrier)"
|
||||||
|
}
|
||||||
|
"#);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn embedder_document_template() {
|
||||||
|
let (_mock, setting) = crate::vector::rest::create_mock().await;
|
||||||
|
let server = Server::new().await;
|
||||||
|
let index = server.index("doggo");
|
||||||
|
|
||||||
|
let (response, code) = index
|
||||||
|
.update_settings(json!({
|
||||||
|
"embedders": {
|
||||||
|
"rest": setting,
|
||||||
|
},
|
||||||
|
}))
|
||||||
|
.await;
|
||||||
|
snapshot!(code, @"202 Accepted");
|
||||||
|
server.wait_task(response.uid()).await.succeeded();
|
||||||
|
let documents = json!([
|
||||||
|
{"id": 0, "name": "kefir"},
|
||||||
|
]);
|
||||||
|
let (value, code) = index.add_documents(documents, None).await;
|
||||||
|
snapshot!(code, @"202 Accepted");
|
||||||
|
index.wait_task(value.uid()).await.succeeded();
|
||||||
|
|
||||||
|
let (value, code) = index
|
||||||
|
.render(json! {{
|
||||||
|
"template": { "id": "embedders.rest.documentTemplate" },
|
||||||
|
"input": { "documentId": "0" }
|
||||||
|
}})
|
||||||
|
.await;
|
||||||
|
snapshot!(code, @"200 OK");
|
||||||
|
snapshot!(value, @r#"
|
||||||
|
{
|
||||||
|
"template": "{{doc.name}}",
|
||||||
|
"rendered": "kefir"
|
||||||
|
}
|
||||||
|
"#);
|
||||||
|
}
|
||||||
|
@ -3,7 +3,7 @@ mod fragments;
|
|||||||
#[cfg(feature = "test-ollama")]
|
#[cfg(feature = "test-ollama")]
|
||||||
mod ollama;
|
mod ollama;
|
||||||
mod openai;
|
mod openai;
|
||||||
mod rest;
|
pub mod rest;
|
||||||
mod settings;
|
mod settings;
|
||||||
|
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
@ -15,10 +15,6 @@ use crate::common::index::Index;
|
|||||||
use crate::common::{default_settings, GetAllDocumentsOptions, Server};
|
use crate::common::{default_settings, GetAllDocumentsOptions, Server};
|
||||||
use crate::json;
|
use crate::json;
|
||||||
|
|
||||||
async fn get_server_vector() -> Server {
|
|
||||||
Server::new().await
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn add_remove_user_provided() {
|
async fn add_remove_user_provided() {
|
||||||
let server = Server::new().await;
|
let server = Server::new().await;
|
||||||
|
@ -7,9 +7,8 @@ use meili_snap::{json_string, snapshot};
|
|||||||
use wiremock::matchers::{method, path};
|
use wiremock::matchers::{method, path};
|
||||||
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
||||||
|
|
||||||
use crate::common::{GetAllDocumentsOptions, Value};
|
use crate::common::{GetAllDocumentsOptions, Server, Value};
|
||||||
use crate::json;
|
use crate::json;
|
||||||
use crate::vector::get_server_vector;
|
|
||||||
|
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
struct OpenAiResponses(BTreeMap<String, OpenAiResponse>);
|
struct OpenAiResponses(BTreeMap<String, OpenAiResponse>);
|
||||||
@ -349,7 +348,7 @@ async fn create_slow_mock() -> (&'static MockServer, Value) {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn it_works() {
|
async fn it_works() {
|
||||||
let (_mock, setting) = create_mock().await;
|
let (_mock, setting) = create_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -583,7 +582,7 @@ async fn it_works() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn tokenize_long_text() {
|
async fn tokenize_long_text() {
|
||||||
let (_mock, setting) = create_mock_tokenized().await;
|
let (_mock, setting) = create_mock_tokenized().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -646,7 +645,7 @@ async fn tokenize_long_text() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn bad_api_key() {
|
async fn bad_api_key() {
|
||||||
let (_mock, mut setting) = create_mock().await;
|
let (_mock, mut setting) = create_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let documents = json!([
|
let documents = json!([
|
||||||
@ -794,7 +793,7 @@ async fn bad_api_key() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn bad_model() {
|
async fn bad_model() {
|
||||||
let (_mock, mut setting) = create_mock().await;
|
let (_mock, mut setting) = create_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let documents = json!([
|
let documents = json!([
|
||||||
@ -872,7 +871,7 @@ async fn bad_model() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn bad_dimensions() {
|
async fn bad_dimensions() {
|
||||||
let (_mock, mut setting) = create_mock().await;
|
let (_mock, mut setting) = create_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let documents = json!([
|
let documents = json!([
|
||||||
@ -971,7 +970,7 @@ async fn bad_dimensions() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn smaller_dimensions() {
|
async fn smaller_dimensions() {
|
||||||
let (_mock, setting) = create_mock_dimensions().await;
|
let (_mock, setting) = create_mock_dimensions().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1203,7 +1202,7 @@ async fn smaller_dimensions() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn small_embedding_model() {
|
async fn small_embedding_model() {
|
||||||
let (_mock, setting) = create_mock_small_embedding_model().await;
|
let (_mock, setting) = create_mock_small_embedding_model().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1434,7 +1433,7 @@ async fn small_embedding_model() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn legacy_embedding_model() {
|
async fn legacy_embedding_model() {
|
||||||
let (_mock, setting) = create_mock_legacy_embedding_model().await;
|
let (_mock, setting) = create_mock_legacy_embedding_model().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1666,7 +1665,7 @@ async fn legacy_embedding_model() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn it_still_works() {
|
async fn it_still_works() {
|
||||||
let (_mock, setting) = create_fallible_mock().await;
|
let (_mock, setting) = create_fallible_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1898,7 +1897,7 @@ async fn it_still_works() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn timeout() {
|
async fn timeout() {
|
||||||
let (_mock, setting) = create_slow_mock().await;
|
let (_mock, setting) = create_slow_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
|
@ -8,11 +8,11 @@ use tokio::sync::mpsc;
|
|||||||
use wiremock::matchers::{method, path};
|
use wiremock::matchers::{method, path};
|
||||||
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
||||||
|
|
||||||
use crate::common::Value;
|
use crate::common::{Server, Value};
|
||||||
use crate::json;
|
use crate::json;
|
||||||
use crate::vector::{get_server_vector, GetAllDocumentsOptions};
|
use crate::vector::GetAllDocumentsOptions;
|
||||||
|
|
||||||
async fn create_mock() -> (&'static MockServer, Value) {
|
pub async fn create_mock() -> (&'static MockServer, Value) {
|
||||||
let mock_server = Box::leak(Box::new(MockServer::start().await));
|
let mock_server = Box::leak(Box::new(MockServer::start().await));
|
||||||
|
|
||||||
let text_to_embedding: BTreeMap<_, _> = vec![
|
let text_to_embedding: BTreeMap<_, _> = vec![
|
||||||
@ -395,7 +395,7 @@ async fn dummy_testing_the_mock() {
|
|||||||
async fn bad_request() {
|
async fn bad_request() {
|
||||||
let (mock, _setting) = create_mock().await;
|
let (mock, _setting) = create_mock().await;
|
||||||
|
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
// No placeholder string appear in the template
|
// No placeholder string appear in the template
|
||||||
@ -631,7 +631,7 @@ async fn bad_request() {
|
|||||||
async fn bad_response() {
|
async fn bad_response() {
|
||||||
let (mock, _setting) = create_mock().await;
|
let (mock, _setting) = create_mock().await;
|
||||||
|
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
// No placeholder string appear in the template
|
// No placeholder string appear in the template
|
||||||
@ -907,7 +907,7 @@ async fn bad_response() {
|
|||||||
async fn bad_settings() {
|
async fn bad_settings() {
|
||||||
let (mock, _setting) = create_mock().await;
|
let (mock, _setting) = create_mock().await;
|
||||||
|
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1079,7 +1079,7 @@ async fn bad_settings() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn add_vector_and_user_provided() {
|
async fn add_vector_and_user_provided() {
|
||||||
let (_mock, setting) = create_mock().await;
|
let (_mock, setting) = create_mock().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1185,7 +1185,7 @@ async fn add_vector_and_user_provided() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn server_returns_bad_request() {
|
async fn server_returns_bad_request() {
|
||||||
let (mock, _setting) = create_mock_multiple().await;
|
let (mock, _setting) = create_mock_multiple().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1301,7 +1301,7 @@ async fn server_returns_bad_request() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn server_returns_bad_response() {
|
async fn server_returns_bad_response() {
|
||||||
let (mock, _setting) = create_mock_multiple().await;
|
let (mock, _setting) = create_mock_multiple().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1596,7 +1596,7 @@ async fn server_returns_bad_response() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn server_returns_multiple() {
|
async fn server_returns_multiple() {
|
||||||
let (_mock, setting) = create_mock_multiple().await;
|
let (_mock, setting) = create_mock_multiple().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1702,7 +1702,7 @@ async fn server_returns_multiple() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn server_single_input_returns_in_array() {
|
async fn server_single_input_returns_in_array() {
|
||||||
let (_mock, setting) = create_mock_single_response_in_array().await;
|
let (_mock, setting) = create_mock_single_response_in_array().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1808,7 +1808,7 @@ async fn server_single_input_returns_in_array() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn server_raw() {
|
async fn server_raw() {
|
||||||
let (_mock, setting) = create_mock_raw().await;
|
let (_mock, setting) = create_mock_raw().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -1915,7 +1915,7 @@ async fn server_raw() {
|
|||||||
async fn server_custom_header() {
|
async fn server_custom_header() {
|
||||||
let (mock, setting) = create_mock_raw_with_custom_header().await;
|
let (mock, setting) = create_mock_raw_with_custom_header().await;
|
||||||
|
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -2044,7 +2044,7 @@ async fn server_custom_header() {
|
|||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn searchable_reindex() {
|
async fn searchable_reindex() {
|
||||||
let (_mock, setting) = create_mock_default_template().await;
|
let (_mock, setting) = create_mock_default_template().await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
@ -2154,7 +2154,7 @@ async fn searchable_reindex() {
|
|||||||
async fn last_error_stats() {
|
async fn last_error_stats() {
|
||||||
let (sender, mut receiver) = mpsc::channel(10);
|
let (sender, mut receiver) = mpsc::channel(10);
|
||||||
let (_mock, setting) = create_faulty_mock_raw(sender).await;
|
let (_mock, setting) = create_faulty_mock_raw(sender).await;
|
||||||
let server = get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
|
@ -258,7 +258,7 @@ async fn reset_embedder_documents() {
|
|||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn ollama_url_checks() {
|
async fn ollama_url_checks() {
|
||||||
let server = super::get_server_vector().await;
|
let server = Server::new().await;
|
||||||
let index = server.index("doggo");
|
let index = server.index("doggo");
|
||||||
|
|
||||||
let (response, code) = index
|
let (response, code) = index
|
||||||
|
Reference in New Issue
Block a user