Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,51 @@ public void validate(List<FeedResponse<T>> feedList) {
return this;
}

public Builder<T> hasQueryAdviceOnAtLeastOnePage() {
validators.add(new FeedResponseListValidator<T>() {
@Override
public void validate(List<FeedResponse<T>> feedList) {
boolean foundAdvice = feedList.stream()
.anyMatch(page -> page.getQueryAdvice() != null);
assertThat(foundAdvice)
.describedAs("at least one page should have query advice")
.isTrue();
}
});
return this;
}

public Builder<T> hasQueryAdviceContainingOnAtLeastOnePage(final String expectedSubstring) {
validators.add(new FeedResponseListValidator<T>() {
@Override
public void validate(List<FeedResponse<T>> feedList) {
boolean foundAdvice = feedList.stream()
.anyMatch(page -> {
String advice = page.getQueryAdvice();
return advice != null && advice.contains(expectedSubstring);
});
assertThat(foundAdvice)
.describedAs("at least one page should have query advice containing: " + expectedSubstring)
.isTrue();
}
});
return this;
}

public Builder<T> hasNoQueryAdviceOnAnyPage() {
validators.add(new FeedResponseListValidator<T>() {
@Override
public void validate(List<FeedResponse<T>> feedList) {
for (FeedResponse<T> page : feedList) {
assertThat(page.getQueryAdvice())
.describedAs("no page should have query advice")
.isNull();
}
}
});
return this;
}

public Builder<T> withValidator(FeedResponseListValidator<T> validator) {
validators.add(validator);
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,47 @@ public void validate(FeedResponse<T> feedPage) {
return this;
}

public Builder<T> hasQueryAdvice() {
validators.add(new FeedResponseValidator<T>() {
@Override
public void validate(FeedResponse<T> feedPage) {
String queryAdvice = feedPage.getQueryAdvice();
assertThat(queryAdvice)
.describedAs("query advice")
.isNotNull()
.isNotEmpty();
}
});
return this;
}

public Builder<T> hasQueryAdviceContaining(final String expectedSubstring) {
validators.add(new FeedResponseValidator<T>() {
@Override
public void validate(FeedResponse<T> feedPage) {
String queryAdvice = feedPage.getQueryAdvice();
assertThat(queryAdvice)
.describedAs("query advice")
.isNotNull()
.contains(expectedSubstring);
}
});
return this;
}

public Builder<T> noQueryAdvice() {
validators.add(new FeedResponseValidator<T>() {
@Override
public void validate(FeedResponse<T> feedPage) {
String queryAdvice = feedPage.getQueryAdvice();
assertThat(queryAdvice)
.describedAs("query advice should be null when not enabled")
.isNull();
}
});
return this;
}

private <T> Resource getResource(T response) {
if (response instanceof Resource
|| response instanceof CosmosConflictProperties
Expand Down
Loading
Loading