Skip to content

Commit cac5652

Browse files
authored
[CHA-1155] Add channel message count (#191)
* [CHA-1155] Add channel message count * Added file with tests * Removed tests * Added tests again * Updated property name * Removed debug logging * Format
1 parent fa6b08a commit cac5652

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

src/main/java/io/getstream/chat/java/models/Channel.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ public class Channel {
8080
@JsonProperty("messages")
8181
private List<Message> messages;
8282

83+
@Nullable
84+
@JsonProperty("message_count")
85+
private Integer messageCount;
86+
8387
@Nullable
8488
@JsonProperty("read")
8589
private List<ChannelRead> read;
@@ -427,6 +431,10 @@ public static class ConfigOverridesRequestObject {
427431
@Nullable
428432
@JsonProperty("shared_locations")
429433
private Boolean sharedLocations;
434+
435+
@Nullable
436+
@JsonProperty("count_messages")
437+
private Boolean countMessages;
430438
}
431439

432440
@Builder
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package io.getstream.chat.java;
2+
3+
import io.getstream.chat.java.models.Channel;
4+
import io.getstream.chat.java.models.Channel.ChannelGetResponse;
5+
import io.getstream.chat.java.models.Channel.ChannelRequestObject;
6+
import io.getstream.chat.java.models.Message;
7+
import io.getstream.chat.java.models.Message.MessageRequestObject;
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
import org.apache.commons.lang3.RandomStringUtils;
11+
import org.junit.jupiter.api.Assertions;
12+
import org.junit.jupiter.api.DisplayName;
13+
import org.junit.jupiter.api.Test;
14+
15+
public class MessageCountTest extends BasicTest {
16+
17+
@DisplayName("Message count is present when feature enabled")
18+
@Test
19+
void whenCountMessagesEnabled_thenMessagesCount() {
20+
// Create a fresh channel with default configuration (count_messages enabled by default)
21+
ChannelGetResponse channelGetResponse =
22+
Assertions.assertDoesNotThrow(
23+
() ->
24+
Channel.getOrCreate("team", RandomStringUtils.randomAlphabetic(12))
25+
.data(
26+
ChannelRequestObject.builder()
27+
.createdBy(testUserRequestObject)
28+
.members(buildChannelMembersList())
29+
.build())
30+
.request());
31+
32+
String type = channelGetResponse.getChannel().getType();
33+
String id = channelGetResponse.getChannel().getId();
34+
35+
// Post a message so the channel has at least one message
36+
MessageRequestObject messageRequest =
37+
MessageRequestObject.builder()
38+
.text("test message")
39+
.userId(testUserRequestObject.getId())
40+
.build();
41+
Assertions.assertDoesNotThrow(() -> Message.send(type, id).message(messageRequest).request());
42+
43+
// Retrieve the channel again to inspect server response
44+
ChannelGetResponse refreshed =
45+
Assertions.assertDoesNotThrow(() -> Channel.getOrCreate(type, id).request());
46+
47+
Assertions.assertTrue(
48+
refreshed.getChannel().getMessageCount() == 1,
49+
"messages_count should be 1 when count_messages is enabled");
50+
}
51+
52+
@DisplayName("Message count is not returned when feature disabled")
53+
@Test
54+
void whenCountMessagesDisabled_thenNoMessageCountPresent() {
55+
// Create a fresh channel first
56+
ChannelGetResponse channelGetResponse =
57+
Assertions.assertDoesNotThrow(
58+
() ->
59+
Channel.getOrCreate("team", RandomStringUtils.randomAlphabetic(12))
60+
.data(
61+
ChannelRequestObject.builder()
62+
.createdBy(testUserRequestObject)
63+
.members(buildChannelMembersList())
64+
.build())
65+
.request());
66+
67+
String type = channelGetResponse.getChannel().getType();
68+
String id = channelGetResponse.getChannel().getId();
69+
70+
// Disable count_messages via partial update (config_overrides)
71+
Map<String, Object> overrides = new HashMap<>();
72+
overrides.put("count_messages", false);
73+
Assertions.assertDoesNotThrow(
74+
() -> Channel.partialUpdate(type, id).setValue("config_overrides", overrides).request());
75+
76+
MessageRequestObject messageRequest =
77+
MessageRequestObject.builder()
78+
.text("test message")
79+
.userId(testUserRequestObject.getId())
80+
.build();
81+
Assertions.assertDoesNotThrow(() -> Message.send(type, id).message(messageRequest).request());
82+
83+
// Retrieve the channel again
84+
ChannelGetResponse refreshed =
85+
Assertions.assertDoesNotThrow(() -> Channel.getOrCreate(type, id).request());
86+
87+
Integer messagesCount = refreshed.getChannel().getMessageCount();
88+
Assertions.assertNull(
89+
messagesCount, "messages_count should not be present when count_messages is disabled");
90+
}
91+
}

0 commit comments

Comments
 (0)