From 11ff024558b72ef1a2a7a151dfa0d3e993a8ce00 Mon Sep 17 00:00:00 2001 From: jason plumb <75337021+breedx-splk@users.noreply.github.com> Date: Fri, 9 Dec 2022 10:51:07 -0800 Subject: [PATCH] Attribute assertions should always contain the attr key (#5027) * improve attribute assertions to alwyas contain the attr key * spotless * change assertion * Update sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java Co-authored-by: jack-berg <34418638+jack-berg@users.noreply.github.com> * fix build Co-authored-by: jack-berg <34418638+jack-berg@users.noreply.github.com> --- .../testing/assertj/AttributeAssertion.java | 7 +++++ .../assertj/AttributeAssertionTest.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java diff --git a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java index e72e81a16ed..a09d9cdfdd9 100644 --- a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java +++ b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java @@ -37,6 +37,13 @@ static AttributeAssertion create( // suppressing here. @SuppressWarnings("NullAway") static AbstractAssert attributeValueAssertion(AttributeKey key, @Nullable Object value) { + AbstractAssert, ?> abstractAssert = makeAssertion(key, value); + String description = "%s attribute '%s'"; + return abstractAssert.as(description, key.getType(), key.getKey()); + } + + private static AbstractAssert, ?> makeAssertion( + AttributeKey key, Object value) { switch (key.getType()) { case STRING: return assertThat((String) value); diff --git a/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java new file mode 100644 index 00000000000..aa229eefb31 --- /dev/null +++ b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.testing.assertj; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; + +import io.opentelemetry.api.common.AttributeKey; +import org.assertj.core.api.AbstractAssert; +import org.junit.jupiter.api.Test; + +class AttributeAssertionTest { + + @Test + void nullAttr_errorMessageContainsAttrName() { + AttributeKey key = AttributeKey.stringKey("flib"); + + assertThatThrownBy( + () -> + AttributeAssertion.create(key, AbstractAssert::isNotNull) + .getAssertion() + .accept(AttributeAssertion.attributeValueAssertion(key, null))) + .isInstanceOf(AssertionError.class) + .hasMessage("[STRING attribute 'flib'] \nExpecting actual not to be null"); + } +}