From 906412dae668aa8ab28a4bfe7c5c9c1e5017a5ae Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Mon, 14 Apr 2025 11:38:40 +0200 Subject: [PATCH] chore: enriched activity now has moderation response --- .../core/models/EnrichedActivity.java | 32 +++++++ .../client/EnrichedActivityModerationIT.java | 87 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 src/test/java/io/getstream/client/EnrichedActivityModerationIT.java diff --git a/src/main/java/io/getstream/core/models/EnrichedActivity.java b/src/main/java/io/getstream/core/models/EnrichedActivity.java index 2fd68f68..8d05f52d 100644 --- a/src/main/java/io/getstream/core/models/EnrichedActivity.java +++ b/src/main/java/io/getstream/core/models/EnrichedActivity.java @@ -35,6 +35,8 @@ public class EnrichedActivity { private final Map> ownReactions; private final Map> latestReactions; private final Map extra; + private final String moderationTemplate; + private final ModerationResponse moderationResponse; private EnrichedActivity(Builder builder) { id = builder.id; @@ -51,6 +53,8 @@ private EnrichedActivity(Builder builder) { ownReactions = builder.ownReactions; latestReactions = builder.latestReactions; extra = builder.extra; + moderationTemplate = builder.moderationTemplate; + moderationResponse = builder.moderationResponse; } public String getID() { @@ -114,6 +118,16 @@ public Map> getLatestReactions() { return latestReactions; } + @JsonProperty("moderation") + public ModerationResponse getModerationResponse() { + return moderationResponse; + } + + @JsonProperty("moderation_template") + public String getModerationTemplate() { + return moderationTemplate; + } + @JsonAnyGetter public Map getExtra() { return extra; @@ -158,6 +172,8 @@ public String toString() { .add("ownReactions", this.ownReactions) .add("latestReactions", this.latestReactions) .add("reactionCounts", this.reactionCounts) + .add("moderationTemplate", this.moderationTemplate) + .add("moderationResponse", this.moderationResponse) .add("extra", this.extra) .toString(); } @@ -182,6 +198,8 @@ public static final class Builder { private Map> ownReactions; private Map> latestReactions; private Map extra; + private String moderationTemplate; + private ModerationResponse moderationResponse; public Builder id(String id) { this.id = id; @@ -294,6 +312,18 @@ public Builder reactionCounts(Map reactionCounts) { return this; } + @JsonProperty("moderation_template") + public Builder moderationTemplate(String moderationTemplate) { + this.moderationTemplate = moderationTemplate; + return this; + } + + @JsonProperty("moderation") + public Builder moderationResponse(ModerationResponse moderationResponse) { + this.moderationResponse = moderationResponse; + return this; + } + @JsonAnySetter public Builder extraField(String key, Object value) { if (extra == null) { @@ -326,6 +356,8 @@ public Builder fromEnrichedActivity(EnrichedActivity activity) { this.ownReactions = activity.ownReactions; this.latestReactions = activity.latestReactions; this.reactionCounts = activity.reactionCounts; + this.moderationTemplate = activity.moderationTemplate; + this.moderationResponse = activity.moderationResponse; this.extra = activity.extra; return this; } diff --git a/src/test/java/io/getstream/client/EnrichedActivityModerationIT.java b/src/test/java/io/getstream/client/EnrichedActivityModerationIT.java new file mode 100644 index 00000000..474e08a1 --- /dev/null +++ b/src/test/java/io/getstream/client/EnrichedActivityModerationIT.java @@ -0,0 +1,87 @@ +package io.getstream.client; + +import static org.junit.Assert.*; + +import io.getstream.core.http.OKHTTPClientAdapter; +import io.getstream.core.models.*; +import io.getstream.core.options.EnrichmentFlags; +import java.util.Date; +import java.util.List; +import okhttp3.OkHttpClient; +import org.junit.Before; +import org.junit.Test; + +public class EnrichedActivityModerationIT { + + private static final String apiKey = + System.getenv("STREAM_KEY") != null + ? System.getenv("STREAM_KEY") + : System.getProperty("STREAM_KEY"); + private static final String secret = + System.getenv("STREAM_SECRET") != null + ? System.getenv("STREAM_SECRET") + : System.getProperty("STREAM_SECRET"); + + private Client client; + + @Before + public void setUp() throws Exception { + client = + Client.builder(apiKey, secret) + .httpClient(new OKHTTPClientAdapter(new OkHttpClient())) + .build(); + } + + @Test + public void testEnrichedActivityModerationFields() throws Exception { + // Create a feed to work with + FlatFeed feed = client.flatFeed("user", "test-moderation123"); + + // Create an activity with moderation template and text that should trigger moderation + Activity activity = + Activity.builder() + .actor("test-user") + .verb("post") + .object("test-object") + .moderationTemplate("moderation_template_activity") + .extraField("text", "good-text") // Using the term that triggers moderation in ModerationClientTest + .foreignID("test-" + System.currentTimeMillis()) + .time(new Date()) + .build(); + + // Add activity to feed + Activity addedActivity = feed.addActivity(activity).join(); + assertNotNull(addedActivity); + + // Verify the Activity has moderation fields + ModerationResponse activityModeration = addedActivity.getModerationResponse(); + assertNotNull(activityModeration); + assertEquals("complete", activityModeration.getStatus()); + assertEquals("keep", activityModeration.getRecommendedAction()); + + // Get enriched activities to verify moderation fields are included + List enrichedActivities = + feed.getEnrichedActivities(new EnrichmentFlags()).join(); + + // Find our activity in the list + EnrichedActivity enrichedActivity = null; + for (EnrichedActivity ea : enrichedActivities) { + if (ea.getID().equals(addedActivity.getID())) { + enrichedActivity = ea; + break; + } + } + + assertNotNull("Could not find the added activity in enriched activities", enrichedActivity); + + // Verify the EnrichedActivity has moderation fields + ModerationResponse enrichedModeration = enrichedActivity.getModerationResponse(); + assertNotNull("EnrichedActivity should have moderation fields", enrichedModeration); + assertEquals("complete", enrichedModeration.getStatus()); + assertEquals("keep", enrichedModeration.getRecommendedAction()); + assertEquals("moderation_template_activity", enrichedActivity.getModerationTemplate()); + + // Clean up + feed.removeActivityByID(addedActivity.getID()).join(); + } +} \ No newline at end of file