Skip to content

Commit

Permalink
feat: added restricted visibility (#170)
Browse files Browse the repository at this point in the history
Co-authored-by: Slava Bobik <[email protected]>
  • Loading branch information
slavabobik and Slava Bobik authored Feb 11, 2025
1 parent 434f807 commit 16d5354
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/main/java/io/getstream/chat/java/models/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ public class Message {
@JsonProperty("user")
private User user;

@Nullable
@JsonProperty("restricted_visibility")
private List<String> restrictedVisibility;

@Nullable
@JsonProperty("attachments")
private List<Attachment> attachments;
Expand Down Expand Up @@ -425,6 +429,10 @@ public static class MessageRequestObject {
@JsonProperty("user")
private UserRequestObject user;

@Nullable
@JsonProperty("restricted_visibility")
private List<String> restrictedVisibility;

@Nullable
@JsonProperty("parent_id")
private String parentId;
Expand Down
65 changes: 65 additions & 0 deletions src/test/java/io/getstream/chat/java/MessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,28 @@ void whenRetrievingAMessage_thenIsRetrieved() {
Assertions.assertTrue(retrievedMessage.getId().equals(testMessage.getId()));
}

@DisplayName("Can send a message with restricted visibility")
@Test
void whenSendingMessageWithRestrictedVisibility_thenMessageHasRestrictedVisibility() {
List<String> restrictedUsers = Arrays.asList(testUserRequestObject.getId());
MessageRequestObject messageRequest =
MessageRequestObject.builder()
.text("This is a restricted message")
.userId(testUserRequestObject.getId())
.restrictedVisibility(restrictedUsers)
.build();

Message restrictedMessage =
Assertions.assertDoesNotThrow(
() ->
Message.send(testChannel.getType(), testChannel.getId())
.message(messageRequest)
.request()
.getMessage());

Assertions.assertEquals(restrictedUsers, restrictedMessage.getRestrictedVisibility());
}

@DisplayName("Can retrieve a deleted message")
@Test
void whenRetrievingADeletedMessage_thenIsRetrieved() {
Expand Down Expand Up @@ -71,6 +93,28 @@ void whenUpdatingAMessage_thenNoException() {
Assertions.assertEquals(updatedText, updatedMessage.getText());
}

@DisplayName("Can update a message with restricted visibility")
@Test
void whenUpdatingAMessageWithRestrictedVisibility_thenNoException() {
// Should not use testMessage to not modify it
Message message = Assertions.assertDoesNotThrow(() -> sendTestMessage());
String updatedText = "This is an updated message";
List<String> restrictedUsers = Arrays.asList(testUserRequestObject.getId());

MessageRequestObject updatedMessageRequest =
MessageRequestObject.builder()
.text(updatedText)
.userId(testUserRequestObject.getId())
.restrictedVisibility(restrictedUsers)
.build();
Message updatedMessage =
Assertions.assertDoesNotThrow(
() -> Message.update(message.getId()).message(updatedMessageRequest).request())
.getMessage();
Assertions.assertEquals(updatedText, updatedMessage.getText());
Assertions.assertEquals(restrictedUsers, updatedMessage.getRestrictedVisibility());
}

@DisplayName("Searching with query and message filter conditions throws an exception")
@Test
void givenQueryAndMessageFilterConditions_whenSearchingMessages_thenThrowException() {
Expand Down Expand Up @@ -663,6 +707,27 @@ void whenPartiallyUpdatingAMessage_thenIsUpdated() {
Assertions.assertEquals(updatedText, updatedMessage.getText());
}

@DisplayName("Can partially update a message with restricted visibility")
@Test
void whenPartiallyUpdatingAMessageWithRestrictedVisibility_thenIsUpdated() {
// Should not use testMessage to not modify it
Message message = Assertions.assertDoesNotThrow(() -> sendTestMessage());
String updatedText = "This is an updated message";
List<String> restrictedUsers = Arrays.asList(testUserRequestObject.getId());

Message updatedMessage =
Assertions.assertDoesNotThrow(
() ->
Message.partialUpdate(message.getId())
.setValue("text", updatedText)
.setValue("restricted_visibility", restrictedUsers)
.user(testUserRequestObject)
.request())
.getMessage();
Assertions.assertEquals(updatedText, updatedMessage.getText());
Assertions.assertEquals(restrictedUsers, updatedMessage.getRestrictedVisibility());
}

@DisplayName("Can pin a message")
@Test
void whenPinningAMessage_thenIsPinned() {
Expand Down

0 comments on commit 16d5354

Please sign in to comment.