From 00d9f576ed90d8b42be728279e93966262c2c470 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Thu, 17 Jul 2025 11:51:12 +0200 Subject: [PATCH] Add tests --- crates/meilisearch-types/src/error.rs | 4 +- .../meilisearch/src/routes/indexes/render.rs | 4 +- .../tests/documents/render_documents.rs | 77 +++++++++++++++++++ 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/crates/meilisearch-types/src/error.rs b/crates/meilisearch-types/src/error.rs index 187b6dde0..c5e082517 100644 --- a/crates/meilisearch-types/src/error.rs +++ b/crates/meilisearch-types/src/error.rs @@ -424,7 +424,9 @@ InvalidRenderTemplateInline , InvalidRequest , BAD_REQU InvalidRenderInput , InvalidRequest , BAD_REQUEST ; InvalidRenderInputDocumentId , InvalidRequest , BAD_REQUEST ; InvalidRenderInputInline , InvalidRequest , BAD_REQUEST ; -RenderDocumentNotFound , InvalidRequest , NOT_FOUND +RenderDocumentNotFound , InvalidRequest , NOT_FOUND ; +TemplateParsingError , InvalidRequest , BAD_REQUEST ; +TemplateRenderingError , InvalidRequest , BAD_REQUEST } impl ErrorCode for JoinError { diff --git a/crates/meilisearch/src/routes/indexes/render.rs b/crates/meilisearch/src/routes/indexes/render.rs index d544e9a41..aec816e2f 100644 --- a/crates/meilisearch/src/routes/indexes/render.rs +++ b/crates/meilisearch/src/routes/indexes/render.rs @@ -311,11 +311,11 @@ impl From for ResponseError { ), TemplateParsing(err) => ResponseError::from_msg( format!("Error parsing template: {}", err.parsing_error("input")), - Code::InvalidRenderTemplate, + Code::TemplateParsingError, ), TemplateRendering(err) => ResponseError::from_msg( format!("Error rendering template: {}", err.rendering_error("input")), - Code::InvalidRenderTemplate, + Code::TemplateRenderingError, ), } } diff --git a/crates/meilisearch/tests/documents/render_documents.rs b/crates/meilisearch/tests/documents/render_documents.rs index 2fca9b537..1d4aae623 100644 --- a/crates/meilisearch/tests/documents/render_documents.rs +++ b/crates/meilisearch/tests/documents/render_documents.rs @@ -330,3 +330,80 @@ async fn retrieve_document_template() { } "#); } + +#[actix_rt::test] +async fn render_document_kefir() { + let index = shared_index_for_fragments().await; + + let (value, code) = + index.render(json! {{ + "template": { "id": "embedders.rest.indexingFragments.basic" }, + "input": { "documentId": "0" }, + }}).await; + snapshot!(code, @"200 OK"); + snapshot!(value, @r#" + { + "template": "{{ doc.name }} is a dog", + "rendered": "kefir is a dog" + } + "#); + + let (value, code) = + index.render(json! {{ + "template": { "id": "embedders.rest.indexingFragments.withBreed" }, + "input": { "documentId": "0" }, + }}).await; + snapshot!(code, @"400 Bad Request"); + snapshot!(value, @r#" + { + "message": "Error rendering template: error while rendering template: liquid: Unknown index\n with:\n variable=doc\n requested index=breed\n available indexes=id, name\n", + "code": "template_rendering_error", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#template_rendering_error" + } + "#); +} + +#[actix_rt::test] +async fn render_inline_document_iko() { + let index = shared_index_for_fragments().await; + + let (value, code) = + index.render(json! {{ + "template": { "id": "embedders.rest.indexingFragments.basic" }, + "input": { "inline": { "doc": { "name": "iko", "breed": "jack russell" } } }, + }}).await; + snapshot!(code, @"200 OK"); + snapshot!(value, @r#" + { + "template": "{{ doc.name }} is a dog", + "rendered": "iko is a dog" + } + "#); + + let (value, code) = + index.render(json! {{ + "template": { "id": "embedders.rest.indexingFragments.withBreed" }, + "input": { "inline": { "doc": { "name": "iko", "breed": "jack russell" } } }, + }}).await; + snapshot!(code, @"200 OK"); + snapshot!(value, @r#" + { + "template": "{{ doc.name }} is a {{ doc.breed }}", + "rendered": "iko is a jack russell" + } + "#); + + let (value, code) = + index.render(json! {{ + "template": { "id": "embedders.rest.searchFragments.justBreed" }, + "input": { "inline": { "media": { "name": "iko", "breed": "jack russell" } } }, + }}).await; + snapshot!(code, @"200 OK"); + snapshot!(value, @r#" + { + "template": "It's a {{ media.breed }}", + "rendered": "It's a jack russell" + } + "#); +}