Skip to content

Commit

Permalink
#1631 fix putting metadata on a single property did not work
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Jäckle <thomas.jaeckle@beyonnex.io>
  • Loading branch information
thjaeckle committed Oct 15, 2023
1 parent 87103b4 commit 0c29642
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
Expand Up @@ -212,7 +212,7 @@ private Metadata buildMetadata(final JsonValue entity, final Set<MetadataHeader>
} else if (metadataHeaderKey.getPath().getLevelCount() == 1) {
metadataBuilder.set(metadataHeaderKey.getPath(), metadataHeaderValue);
}
} else if (metadataHeaderKey.getPath().getLevelCount() > 1 || metadataHeaderValue.isObject()) {
} else {
metadataBuilder.set(metadataHeaderKey.getPath(), metadataHeaderValue);
}
};
Expand Down
Expand Up @@ -38,9 +38,9 @@
import org.eclipse.ditto.things.model.signals.commands.TestConstants;
import org.eclipse.ditto.things.model.signals.commands.modify.MergeThing;
import org.eclipse.ditto.things.model.signals.commands.modify.ModifyFeature;
import org.eclipse.ditto.things.model.signals.commands.modify.ModifyFeatureProperty;
import org.eclipse.ditto.things.model.signals.commands.modify.ModifyThing;
import org.eclipse.ditto.things.model.signals.commands.modify.ThingModifyCommand;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
Expand Down Expand Up @@ -157,6 +157,22 @@ public void createMetadataFromScratch() {
assertThat(underTest.get()).isEqualTo(expected);
}

@Test
public void createMetadataOnSingleProperty() {
final DittoHeaders dittoHeaders = DittoHeaders.newBuilder()
.putMetadata(MetadataHeaderKey.parse("created_by"), JsonValue.of("createMetadataOnSingleProperty"))
.build();
final ModifyFeatureProperty modifyFeatureProperty = ModifyFeatureProperty.of(thingWithoutMetadata.getEntityId().orElseThrow(),
fluxCapacitor.getId(), JsonPointer.of("grumbo"), JsonValue.of(23), dittoHeaders);
final Metadata expected = Metadata.newBuilder()
.set(JsonPointer.of("created_by"), "createMetadataOnSingleProperty")
.build();

final MetadataFromCommand underTest = MetadataFromCommand.of(modifyFeatureProperty, thingWithoutMetadata, null);

assertThat(underTest.get()).isEqualTo(expected);
}

@Test
public void modifyExistingMetadataWithMergeCommand() {
final Metadata existingMetadata = Metadata.newBuilder()
Expand Down

0 comments on commit 0c29642

Please sign in to comment.