mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-06 12:46:31 +00:00
Add test for ugly names
This commit is contained in:
@ -610,3 +610,89 @@ async fn embedder_document_template() {
|
||||
}
|
||||
"#);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn ugly_embedder_and_fragment_names() {
|
||||
let server = Server::new().await;
|
||||
let index = server.unique_index();
|
||||
|
||||
let (_response, code) = server.set_features(json!({"multimodal": true})).await;
|
||||
snapshot!(code, @"200 OK");
|
||||
|
||||
// Set up a mock server for the embedder
|
||||
let mock_server = wiremock::MockServer::start().await;
|
||||
wiremock::Mock::given(wiremock::matchers::method("POST"))
|
||||
.and(wiremock::matchers::path("/"))
|
||||
.respond_with(wiremock::ResponseTemplate::new(200).set_body_json(json!({
|
||||
"data": [0.1, 0.2, 0.3]
|
||||
})))
|
||||
.mount(&mock_server)
|
||||
.await;
|
||||
|
||||
// Create an embedder with an ugly name containing quotes and special characters
|
||||
let (response, code) = index
|
||||
.update_settings(json!({
|
||||
"embedders": {
|
||||
"Open AI \"3.1\"": {
|
||||
"source": "rest",
|
||||
"url": mock_server.uri(),
|
||||
"dimensions": 3,
|
||||
"request": "{{fragment}}",
|
||||
"response": {
|
||||
"data": "{{embedding}}"
|
||||
},
|
||||
"indexingFragments": {
|
||||
"ugly fragment \"name\".": {"value": "{{ doc.name }} processed by AI"}
|
||||
},
|
||||
"searchFragments": {
|
||||
"search with [brackets]": {"value": "It's a {{ media.breed }}"}
|
||||
}
|
||||
},
|
||||
},
|
||||
}))
|
||||
.await;
|
||||
snapshot!(code, @"202 Accepted");
|
||||
server.wait_task(response.uid()).await.succeeded();
|
||||
|
||||
// Test retrieving indexing fragment template with ugly name
|
||||
let (value, code) = index
|
||||
.render(json! {{
|
||||
"template": { "id": r#"embedders."Open AI \"3.1\"".indexingFragments."ugly fragment \"name\".""# },
|
||||
}})
|
||||
.await;
|
||||
snapshot!(code, @"200 OK");
|
||||
snapshot!(value, @r#"
|
||||
{
|
||||
"template": "{{ doc.name }} processed by AI",
|
||||
"rendered": null
|
||||
}
|
||||
"#);
|
||||
|
||||
// Test retrieving search fragment template with ugly name
|
||||
let (value, code) = index
|
||||
.render(json! {{
|
||||
"template": { "id": r#"embedders."Open AI \"3.1\"".searchFragments."search with [brackets]""# },
|
||||
}})
|
||||
.await;
|
||||
snapshot!(code, @"200 OK");
|
||||
snapshot!(value, @r#"
|
||||
{
|
||||
"template": "It's a {{ media.breed }}",
|
||||
"rendered": null
|
||||
}
|
||||
"#);
|
||||
|
||||
// Test quoting normal parts of the template ID
|
||||
let (value, code) = index
|
||||
.render(json! {{
|
||||
"template": { "id": r#""embedders"."Open AI \"3.1\""."indexingFragments"."ugly fragment \"name\".""# }
|
||||
}})
|
||||
.await;
|
||||
snapshot!(code, @"200 OK");
|
||||
snapshot!(value, @r#"
|
||||
{
|
||||
"template": "{{ doc.name }} processed by AI",
|
||||
"rendered": null
|
||||
}
|
||||
"#);
|
||||
}
|
||||
|
Reference in New Issue
Block a user