Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to assert that some String contains at least one value from the List <String>?

I'm testing some UI functionality with Java and AssertJ. So when I receive some massive string from UI, I should verify if that String contains at least one predefined value from List<String>. It is easy to do opposite thing - verify if list contains at least once some String value but this is not my case. I can't find solution in standard methods.

public static final List<String> OPTIONS = Arrays.asList("Foo", "Bar", "Baz");

String text = "Just some random text with bar";

what I need is smth like this :

Assertions.assertThat(text)
                .as("Should contain at least one value from OPTIONS ")
                .containsAnyOf(OPTIONS)
like image 218
Vadam Avatar asked Apr 06 '19 14:04

Vadam


2 Answers

.matches(s -> OPTIONS.stream().anyMatch(option -> s.contains(option)));
like image 153
JB Nizet Avatar answered Oct 07 '22 06:10

JB Nizet


You can also try to use Condition and AssertJ assertions like areAtLeastOne(), areAtLeast(), for instance:

assertThat(OPTIONS)
.areAtLeastOne(new Condition<>(text::contains,
                                String.format("Error message '%s'", args);
like image 41
Alexei Sosenkov Avatar answered Oct 07 '22 05:10

Alexei Sosenkov