mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-07-27 00:31:02 +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")]
|
||||
mod ollama;
|
||||
mod openai;
|
||||
mod rest;
|
||||
pub mod rest;
|
||||
mod settings;
|
||||
|
||||
use std::str::FromStr;
|
||||
@ -15,10 +15,6 @@ use crate::common::index::Index;
|
||||
use crate::common::{default_settings, GetAllDocumentsOptions, Server};
|
||||
use crate::json;
|
||||
|
||||
async fn get_server_vector() -> Server {
|
||||
Server::new().await
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn add_remove_user_provided() {
|
||||
let server = Server::new().await;
|
||||
|
@ -7,9 +7,8 @@ use meili_snap::{json_string, snapshot};
|
||||
use wiremock::matchers::{method, path};
|
||||
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
||||
|
||||
use crate::common::{GetAllDocumentsOptions, Value};
|
||||
use crate::common::{GetAllDocumentsOptions, Server, Value};
|
||||
use crate::json;
|
||||
use crate::vector::get_server_vector;
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct OpenAiResponses(BTreeMap<String, OpenAiResponse>);
|
||||
@ -349,7 +348,7 @@ async fn create_slow_mock() -> (&'static MockServer, Value) {
|
||||
#[actix_rt::test]
|
||||
async fn it_works() {
|
||||
let (_mock, setting) = create_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -583,7 +582,7 @@ async fn it_works() {
|
||||
#[actix_rt::test]
|
||||
async fn tokenize_long_text() {
|
||||
let (_mock, setting) = create_mock_tokenized().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -646,7 +645,7 @@ async fn tokenize_long_text() {
|
||||
#[actix_rt::test]
|
||||
async fn bad_api_key() {
|
||||
let (_mock, mut setting) = create_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let documents = json!([
|
||||
@ -794,7 +793,7 @@ async fn bad_api_key() {
|
||||
#[actix_rt::test]
|
||||
async fn bad_model() {
|
||||
let (_mock, mut setting) = create_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let documents = json!([
|
||||
@ -872,7 +871,7 @@ async fn bad_model() {
|
||||
#[actix_rt::test]
|
||||
async fn bad_dimensions() {
|
||||
let (_mock, mut setting) = create_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let documents = json!([
|
||||
@ -971,7 +970,7 @@ async fn bad_dimensions() {
|
||||
#[actix_rt::test]
|
||||
async fn smaller_dimensions() {
|
||||
let (_mock, setting) = create_mock_dimensions().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1203,7 +1202,7 @@ async fn smaller_dimensions() {
|
||||
#[actix_rt::test]
|
||||
async fn small_embedding_model() {
|
||||
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 (response, code) = index
|
||||
@ -1434,7 +1433,7 @@ async fn small_embedding_model() {
|
||||
#[actix_rt::test]
|
||||
async fn legacy_embedding_model() {
|
||||
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 (response, code) = index
|
||||
@ -1666,7 +1665,7 @@ async fn legacy_embedding_model() {
|
||||
#[actix_rt::test]
|
||||
async fn it_still_works() {
|
||||
let (_mock, setting) = create_fallible_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1898,7 +1897,7 @@ async fn it_still_works() {
|
||||
#[actix_rt::test]
|
||||
async fn timeout() {
|
||||
let (_mock, setting) = create_slow_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
|
@ -8,11 +8,11 @@ use tokio::sync::mpsc;
|
||||
use wiremock::matchers::{method, path};
|
||||
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
|
||||
|
||||
use crate::common::Value;
|
||||
use crate::common::{Server, Value};
|
||||
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 text_to_embedding: BTreeMap<_, _> = vec![
|
||||
@ -395,7 +395,7 @@ async fn dummy_testing_the_mock() {
|
||||
async fn bad_request() {
|
||||
let (mock, _setting) = create_mock().await;
|
||||
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
// No placeholder string appear in the template
|
||||
@ -631,7 +631,7 @@ async fn bad_request() {
|
||||
async fn bad_response() {
|
||||
let (mock, _setting) = create_mock().await;
|
||||
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
// No placeholder string appear in the template
|
||||
@ -907,7 +907,7 @@ async fn bad_response() {
|
||||
async fn bad_settings() {
|
||||
let (mock, _setting) = create_mock().await;
|
||||
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1079,7 +1079,7 @@ async fn bad_settings() {
|
||||
#[actix_rt::test]
|
||||
async fn add_vector_and_user_provided() {
|
||||
let (_mock, setting) = create_mock().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1185,7 +1185,7 @@ async fn add_vector_and_user_provided() {
|
||||
#[actix_rt::test]
|
||||
async fn server_returns_bad_request() {
|
||||
let (mock, _setting) = create_mock_multiple().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1301,7 +1301,7 @@ async fn server_returns_bad_request() {
|
||||
#[actix_rt::test]
|
||||
async fn server_returns_bad_response() {
|
||||
let (mock, _setting) = create_mock_multiple().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1596,7 +1596,7 @@ async fn server_returns_bad_response() {
|
||||
#[actix_rt::test]
|
||||
async fn server_returns_multiple() {
|
||||
let (_mock, setting) = create_mock_multiple().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1702,7 +1702,7 @@ async fn server_returns_multiple() {
|
||||
#[actix_rt::test]
|
||||
async fn server_single_input_returns_in_array() {
|
||||
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 (response, code) = index
|
||||
@ -1808,7 +1808,7 @@ async fn server_single_input_returns_in_array() {
|
||||
#[actix_rt::test]
|
||||
async fn server_raw() {
|
||||
let (_mock, setting) = create_mock_raw().await;
|
||||
let server = get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
@ -1915,7 +1915,7 @@ async fn server_raw() {
|
||||
async fn server_custom_header() {
|
||||
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 (response, code) = index
|
||||
@ -2044,7 +2044,7 @@ async fn server_custom_header() {
|
||||
#[actix_rt::test]
|
||||
async fn searchable_reindex() {
|
||||
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 (response, code) = index
|
||||
@ -2154,7 +2154,7 @@ async fn searchable_reindex() {
|
||||
async fn last_error_stats() {
|
||||
let (sender, mut receiver) = mpsc::channel(10);
|
||||
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 (response, code) = index
|
||||
|
@ -258,7 +258,7 @@ async fn reset_embedder_documents() {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn ollama_url_checks() {
|
||||
let server = super::get_server_vector().await;
|
||||
let server = Server::new().await;
|
||||
let index = server.index("doggo");
|
||||
|
||||
let (response, code) = index
|
||||
|
Reference in New Issue
Block a user