Improve support for running tests on windows
Signed-off-by: szarpul@users.noreply.github.com Signed-off-by: Mark Pollack <mark.pollack@broadcom.com>
This commit is contained in:
committed by
Soby Chacko
parent
9774b4eedc
commit
06ea88312a
@@ -25,14 +25,14 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
/**
|
||||
* @author Christian Tzolov
|
||||
*/
|
||||
public class ContentFormatterTests {
|
||||
class ContentFormatterTests {
|
||||
|
||||
Document document = new Document("The World is Big and Salvation Lurks Around the Corner",
|
||||
Map.of("embedKey1", "value1", "embedKey2", "value2", "embedKey3", "value3", "llmKey2", "value4"));
|
||||
|
||||
@Test
|
||||
public void noExplicitlySetFormatter() {
|
||||
assertThat(this.document.getText()).isEqualTo("""
|
||||
void noExplicitlySetFormatter() {
|
||||
TextBlockAssertion.assertThat(this.document.getText()).isEqualTo("""
|
||||
The World is Big and Salvation Lurks Around the Corner""");
|
||||
|
||||
assertThat(this.document.getFormattedContent()).isEqualTo(this.document.getFormattedContent(MetadataMode.ALL));
|
||||
@@ -42,17 +42,18 @@ public class ContentFormatterTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultConfigTextFormatter() {
|
||||
void defaultConfigTextFormatter() {
|
||||
|
||||
DefaultContentFormatter defaultConfigFormatter = DefaultContentFormatter.defaultConfig();
|
||||
|
||||
assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL)).isEqualTo("""
|
||||
llmKey2: value4
|
||||
embedKey1: value1
|
||||
embedKey2: value2
|
||||
embedKey3: value3
|
||||
TextBlockAssertion.assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL))
|
||||
.isEqualTo("""
|
||||
llmKey2: value4
|
||||
embedKey1: value1
|
||||
embedKey2: value2
|
||||
embedKey3: value3
|
||||
|
||||
The World is Big and Salvation Lurks Around the Corner""");
|
||||
The World is Big and Salvation Lurks Around the Corner""");
|
||||
|
||||
assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL))
|
||||
.isEqualTo(this.document.getFormattedContent());
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2024-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.ai.document;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.assertj.core.api.AbstractCharSequenceAssert;
|
||||
import org.assertj.core.api.Assertions;
|
||||
|
||||
public class TextBlockAssertion extends AbstractCharSequenceAssert<TextBlockAssertion, String> {
|
||||
|
||||
protected TextBlockAssertion(String string) {
|
||||
super(string, TextBlockAssertion.class);
|
||||
}
|
||||
|
||||
public static TextBlockAssertion assertThat(String actual) {
|
||||
return new TextBlockAssertion(actual);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextBlockAssertion isEqualTo(Object expected) {
|
||||
Assertions.assertThat(normalizedEOL(actual)).isEqualTo(normalizedEOL((String) expected));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextBlockAssertion contains(CharSequence... values) {
|
||||
Assertions.assertThat(normalizedEOL(actual)).contains(normalizedEOL(values));
|
||||
return this;
|
||||
}
|
||||
|
||||
private String normalizedEOL(CharSequence... values) {
|
||||
return Arrays.stream(values).map(CharSequence::toString).map(this::normalizedEOL).reduce("", (a, b) -> a + b);
|
||||
}
|
||||
|
||||
private String normalizedEOL(String line) {
|
||||
return line.replaceAll("\r\n|\r|\n", System.lineSeparator());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,6 +38,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.ai.util.TextBlockAssertion;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -246,24 +247,25 @@ class BeanOutputConverterTest {
|
||||
@Test
|
||||
void formatClassType() {
|
||||
var converter = new BeanOutputConverter<>(TestClass.class);
|
||||
assertThat(converter.getFormat()).isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}```
|
||||
""");
|
||||
TextBlockAssertion.assertThat(converter.getFormat())
|
||||
.isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}```
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -271,24 +273,25 @@ class BeanOutputConverterTest {
|
||||
var converter = new BeanOutputConverter<>(new ParameterizedTypeReference<TestClass>() {
|
||||
|
||||
});
|
||||
assertThat(converter.getFormat()).isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}```
|
||||
""");
|
||||
TextBlockAssertion.assertThat(converter.getFormat())
|
||||
.isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}```
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -296,33 +299,34 @@ class BeanOutputConverterTest {
|
||||
var converter = new BeanOutputConverter<>(new ParameterizedTypeReference<List<TestClass>>() {
|
||||
|
||||
});
|
||||
assertThat(converter.getFormat()).isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
}```
|
||||
""");
|
||||
TextBlockAssertion.assertThat(converter.getFormat())
|
||||
.isEqualTo(
|
||||
"""
|
||||
Your response should be in JSON format.
|
||||
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.
|
||||
Do not include markdown code blocks in your response.
|
||||
Remove the ```json markdown from the output.
|
||||
Here is the JSON Schema instance your output must adhere to:
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "array",
|
||||
"items" : {
|
||||
"type" : "object",
|
||||
"properties" : {
|
||||
"someString" : {
|
||||
"type" : "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
}```
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void formatClassTypeWithAnnotations() {
|
||||
var converter = new BeanOutputConverter<>(TestClassWithJsonAnnotations.class);
|
||||
assertThat(converter.getFormat()).contains("""
|
||||
TextBlockAssertion.assertThat(converter.getFormat()).contains("""
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
@@ -342,7 +346,7 @@ class BeanOutputConverterTest {
|
||||
var converter = new BeanOutputConverter<>(new ParameterizedTypeReference<TestClassWithJsonAnnotations>() {
|
||||
|
||||
});
|
||||
assertThat(converter.getFormat()).contains("""
|
||||
TextBlockAssertion.assertThat(converter.getFormat()).contains("""
|
||||
```{
|
||||
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
||||
"type" : "object",
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2024-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.ai.util;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.assertj.core.api.AbstractCharSequenceAssert;
|
||||
import org.assertj.core.api.Assertions;
|
||||
|
||||
public class TextBlockAssertion extends AbstractCharSequenceAssert<TextBlockAssertion, String> {
|
||||
|
||||
protected TextBlockAssertion(String string) {
|
||||
super(string, TextBlockAssertion.class);
|
||||
}
|
||||
|
||||
public static TextBlockAssertion assertThat(String actual) {
|
||||
return new TextBlockAssertion(actual);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextBlockAssertion isEqualTo(Object expected) {
|
||||
Assertions.assertThat(normalizedEOL(actual)).isEqualTo(normalizedEOL((String) expected));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextBlockAssertion contains(CharSequence... values) {
|
||||
Assertions.assertThat(normalizedEOL(actual)).contains(normalizedEOL(values));
|
||||
return this;
|
||||
}
|
||||
|
||||
private String normalizedEOL(CharSequence... values) {
|
||||
return Arrays.stream(values).map(CharSequence::toString).map(this::normalizedEOL).reduce("", (a, b) -> a + b);
|
||||
}
|
||||
|
||||
private String normalizedEOL(String line) {
|
||||
return line.replaceAll("\r\n|\r|\n", System.lineSeparator());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user