Search in sources :

Example 1 with StreamSubscriptionResult

use of com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult in project zulip-java-client by jamesnetherton.

the class ZulipStreamIT method streamCrudOperations.

@Test
public void streamCrudOperations() throws Exception {
    // Create
    StreamSubscriptionResult result = zulip.streams().subscribe(StreamSubscriptionRequest.of("Test Stream 1", "Test Stream 1"), StreamSubscriptionRequest.of("Test Stream 2", "Test Stream 2"), StreamSubscriptionRequest.of("Test Stream 3", "Test Stream 3")).withAuthorizationErrorsFatal(false).withHistoryPublicToSubscribers(true).withInviteOnly(false).withMessageRetention(RetentionPolicy.FOREVER).withStreamPostPolicy(StreamPostPolicy.ANY).execute();
    Map<String, List<String>> created = result.getSubscribed();
    assertTrue(created.containsKey("test@test.com"));
    assertEquals(3, created.get("test@test.com").size());
    // Read
    List<Stream> streams = zulip.streams().getAll().withIncludeDefault(true).execute();
    List<Stream> createdStreams = streams.stream().filter(stream -> stream.getDescription().startsWith("Test Stream")).collect(Collectors.toList());
    for (int i = 1; i < createdStreams.size(); i++) {
        Stream stream = createdStreams.get(i - 1);
        assertEquals("Test Stream " + i, stream.getDescription());
        assertEquals("<p>Test Stream " + i + "</p>", stream.getRenderedDescription());
        assertTrue(stream.getDateCreated().toEpochMilli() > 0);
        assertFalse(stream.isInviteOnly());
        assertEquals("Test Stream " + i, stream.getName());
        assertTrue(stream.getStreamId() > 0);
        assertFalse(stream.isWebPublic());
        assertEquals(StreamPostPolicy.ANY, stream.getStreamPostPolicy());
        assertTrue(stream.isHistoryPublicToSubscribers());
        assertEquals(-1, stream.getMessageRetentionDays());
        assertFalse(stream.isDefault());
        assertFalse(stream.isAnnouncementOnly());
    }
    long firstStreamId = createdStreams.get(0).getStreamId();
    // Update
    zulip.streams().updateStream(firstStreamId).withDescription("Updated Description").withName("Updated Name").withMessageRetention(30).withHistoryPublicToSubscribers(true).withStreamPostPolicy(StreamPostPolicy.ADMIN_ONLY).execute();
    Optional<Stream> updatedStreamOptional = zulip.streams().getAll().execute().stream().filter(stream -> stream.getStreamId() == firstStreamId).findFirst();
    Stream updatedStream = updatedStreamOptional.get();
    assertEquals("Updated Description", updatedStream.getDescription());
    assertEquals("<p>Updated Description</p>", updatedStream.getRenderedDescription());
    if (updatedStream.getDateCreated() != null) {
        assertTrue(updatedStream.getDateCreated().toEpochMilli() > 0);
    }
    assertFalse(updatedStream.isInviteOnly());
    assertEquals("Updated Name", updatedStream.getName());
    assertEquals(firstStreamId, updatedStream.getStreamId());
    assertFalse(updatedStream.isWebPublic());
    assertEquals(StreamPostPolicy.ADMIN_ONLY, updatedStream.getStreamPostPolicy());
    assertTrue(updatedStream.isHistoryPublicToSubscribers());
    assertEquals(30, updatedStream.getMessageRetentionDays());
    assertFalse(updatedStream.isDefault());
    assertTrue(updatedStream.isAnnouncementOnly());
    // Delete
    zulip.streams().delete(firstStreamId).execute();
    // Verify deletion
    streams = zulip.streams().getAll().withIncludeDefault(true).execute();
    assertEquals(2, streams.size());
}
Also used : ZulipClientException(com.github.jamesnetherton.zulip.client.exception.ZulipClientException) Stream(com.github.jamesnetherton.zulip.client.api.stream.Stream) StreamPostPolicy(com.github.jamesnetherton.zulip.client.api.stream.StreamPostPolicy) StreamSubscription(com.github.jamesnetherton.zulip.client.api.stream.StreamSubscription) StreamSubscriptionRequest(com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionRequest) ZulipIntegrationTestBase(com.github.jamesnetherton.zulip.client.api.integration.ZulipIntegrationTestBase) Topic(com.github.jamesnetherton.zulip.client.api.stream.Topic) Collectors(java.util.stream.Collectors) Test(org.junit.jupiter.api.Test) List(java.util.List) RetentionPolicy(com.github.jamesnetherton.zulip.client.api.stream.RetentionPolicy) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Map(java.util.Map) Optional(java.util.Optional) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) StreamSubscriptionResult(com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult) StreamSubscriptionResult(com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult) List(java.util.List) Stream(com.github.jamesnetherton.zulip.client.api.stream.Stream) Test(org.junit.jupiter.api.Test)

Example 2 with StreamSubscriptionResult

use of com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult in project zulip-java-client by jamesnetherton.

the class ZulipDraftIT method draftCrudOperations.

@Test
public void draftCrudOperations() throws Exception {
    // Create stream
    StreamSubscriptionResult result = zulip.streams().subscribe(StreamSubscriptionRequest.of("Test Stream For Draft", "Test Stream For Draft")).withAuthorizationErrorsFatal(false).withHistoryPublicToSubscribers(true).withInviteOnly(false).withMessageRetention(RetentionPolicy.FOREVER).withStreamPostPolicy(StreamPostPolicy.ANY).execute();
    Map<String, List<String>> created = result.getSubscribed();
    assertEquals(1, created.get("test@test.com").size());
    List<Stream> streams = zulip.streams().getAll().withIncludeDefault(true).execute();
    Stream stream = streams.stream().filter(s -> s.getName().equals("Test Stream For Draft")).findFirst().get();
    // Create drafts
    List<Draft> drafts = new ArrayList<>();
    for (int i = 1; i <= 3; i++) {
        Draft draft = new Draft();
        draft.setTimestamp(Instant.now());
        draft.setContent("Draft Content " + i);
        draft.setTopic("Test Draft Topic " + i);
        if (i < 3) {
            draft.setType(DraftType.STREAM);
            draft.setTo(Arrays.asList(stream.getStreamId()));
        } else {
            draft.setType(DraftType.PRIVATE);
            draft.setTo(Arrays.asList(ownUser.getUserId()));
        }
        drafts.add(draft);
    }
    List<Long> createdIds = zulip.drafts().createDrafts(drafts).execute();
    assertEquals(3, createdIds.size());
    // Read drafts
    List<Draft> createdDrafts = zulip.drafts().getDrafts().execute();
    assertEquals(3, createdDrafts.size());
    for (int i = 1; i <= createdDrafts.size(); i++) {
        Draft draft = createdDrafts.get(i - 1);
        assertTrue(draft.getTimestamp().toEpochMilli() > 0);
        assertEquals("Draft Content " + i, draft.getContent());
        if (i < 3) {
            assertEquals(DraftType.STREAM, draft.getType());
            assertEquals("Test Draft Topic " + i, draft.getTopic());
            assertTrue(draft.getTo().contains(stream.getStreamId()));
        } else {
            assertEquals(DraftType.PRIVATE, draft.getType());
            assertTrue(draft.getTo().contains(ownUser.getUserId()));
        }
    }
    // Update drafts
    for (int i = 1; i <= createdDrafts.size(); i++) {
        Draft draft = createdDrafts.get(i - 1);
        draft.setContent("Updated Draft " + i);
        draft.setTopic("Updated Topic " + i);
        if (i < 3) {
            draft.setType(DraftType.PRIVATE);
            draft.setTo(Arrays.asList(ownUser.getUserId()));
            draft.setTopic("");
        } else {
            draft.setType(DraftType.STREAM);
            draft.setTo(Arrays.asList(stream.getStreamId()));
        }
        zulip.drafts().editDraft(draft).execute();
    }
    // Verify updates
    List<Draft> updatedDrafts = zulip.drafts().getDrafts().execute();
    assertEquals(3, updatedDrafts.size());
    for (int i = 1; i <= updatedDrafts.size(); i++) {
        Draft draft = updatedDrafts.get(i - 1);
        assertTrue(draft.getTimestamp().toEpochMilli() > 0);
        assertEquals("Updated Draft " + i, draft.getContent());
        if (i < 3) {
            assertEquals(DraftType.PRIVATE, draft.getType());
            assertTrue(draft.getTo().contains(ownUser.getUserId()));
        } else {
            assertEquals(DraftType.STREAM, draft.getType());
            assertEquals("Updated Topic " + i, draft.getTopic());
            assertTrue(draft.getTo().contains(stream.getStreamId()));
        }
    }
    // Delete drafts
    for (Draft draft : updatedDrafts) {
        zulip.drafts().deleteDraft(draft.getId()).execute();
    }
    // Verify deletion
    drafts = zulip.drafts().getDrafts().execute();
    assertEquals(0, drafts.size());
}
Also used : Draft(com.github.jamesnetherton.zulip.client.api.draft.Draft) StreamSubscriptionResult(com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) Stream(com.github.jamesnetherton.zulip.client.api.stream.Stream) Test(org.junit.jupiter.api.Test)

Aggregations

Stream (com.github.jamesnetherton.zulip.client.api.stream.Stream)2 StreamSubscriptionResult (com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult)2 List (java.util.List)2 Test (org.junit.jupiter.api.Test)2 Draft (com.github.jamesnetherton.zulip.client.api.draft.Draft)1 ZulipIntegrationTestBase (com.github.jamesnetherton.zulip.client.api.integration.ZulipIntegrationTestBase)1 RetentionPolicy (com.github.jamesnetherton.zulip.client.api.stream.RetentionPolicy)1 StreamPostPolicy (com.github.jamesnetherton.zulip.client.api.stream.StreamPostPolicy)1 StreamSubscription (com.github.jamesnetherton.zulip.client.api.stream.StreamSubscription)1 StreamSubscriptionRequest (com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionRequest)1 Topic (com.github.jamesnetherton.zulip.client.api.stream.Topic)1 ZulipClientException (com.github.jamesnetherton.zulip.client.exception.ZulipClientException)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Collectors (java.util.stream.Collectors)1 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)1 Assertions.assertFalse (org.junit.jupiter.api.Assertions.assertFalse)1 Assertions.assertTrue (org.junit.jupiter.api.Assertions.assertTrue)1