Search in sources :

Example 1 with Draft

use of com.github.jamesnetherton.zulip.client.api.draft.Draft in project zulip-java-client by jamesnetherton.

the class ZulipIntegrationTestBase method afterEach.

@AfterEach
public void afterEach() throws Exception {
    if (zulip != null) {
        // Clean up messages
        List<Message> messages = zulip.messages().getMessages(100, 0, Anchor.NEWEST).execute();
        if (messages != null) {
            for (Message message : messages) {
                try {
                    zulip.messages().deleteMessage(message.getId()).execute();
                } catch (ZulipClientException e) {
                // Ignore
                }
            }
        }
        List<Message> privateMessages = zulip.messages().getMessages(100, 0, Anchor.NEWEST).withNarrows(Narrow.of("is", "private")).execute();
        if (privateMessages != null) {
            for (Message message : privateMessages) {
                try {
                    zulip.messages().deleteMessage(message.getId()).execute();
                } catch (ZulipClientException e) {
                // Ignore
                }
            }
        }
        // Clean up streams
        List<Stream> streams = zulip.streams().getAll().withIncludeDefault(false).execute();
        if (streams != null) {
            for (Stream stream : streams) {
                try {
                    zulip.streams().delete(stream.getStreamId()).execute();
                } catch (ZulipClientException e) {
                // Ignore
                }
            }
        }
        // Clean up user groups
        List<UserGroup> groups = zulip.users().getUserGroups().execute();
        if (groups != null) {
            for (UserGroup group : groups) {
                try {
                    zulip.users().deleteUserGroup(group.getId()).execute();
                } catch (ZulipClientException e) {
                // Ignore
                }
            }
        }
        // Clean up profile fields
        List<ProfileField> fields = zulip.server().getCustomProfileFields().execute();
        if (fields != null) {
            for (ProfileField field : fields) {
                try {
                    zulip.server().deleteCustomProfileField(field.getId()).execute();
                } catch (ZulipClientException e) {
                // Ignore
                }
            }
        }
    }
    // Clean up drafts
    List<Draft> drafts = zulip.drafts().getDrafts().execute();
    if (drafts != null) {
        for (Draft draft : drafts) {
            try {
                zulip.drafts().deleteDraft(draft.getId()).execute();
            } catch (ZulipClientException e) {
            // Ignore
            }
        }
    }
}
Also used : ZulipClientException(com.github.jamesnetherton.zulip.client.exception.ZulipClientException) Draft(com.github.jamesnetherton.zulip.client.api.draft.Draft) Message(com.github.jamesnetherton.zulip.client.api.message.Message) ProfileField(com.github.jamesnetherton.zulip.client.api.server.ProfileField) Stream(com.github.jamesnetherton.zulip.client.api.stream.Stream) UserGroup(com.github.jamesnetherton.zulip.client.api.user.UserGroup) AfterEach(org.junit.jupiter.api.AfterEach)

Example 2 with Draft

use of com.github.jamesnetherton.zulip.client.api.draft.Draft 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

Draft (com.github.jamesnetherton.zulip.client.api.draft.Draft)2 Stream (com.github.jamesnetherton.zulip.client.api.stream.Stream)2 Message (com.github.jamesnetherton.zulip.client.api.message.Message)1 ProfileField (com.github.jamesnetherton.zulip.client.api.server.ProfileField)1 StreamSubscriptionResult (com.github.jamesnetherton.zulip.client.api.stream.StreamSubscriptionResult)1 UserGroup (com.github.jamesnetherton.zulip.client.api.user.UserGroup)1 ZulipClientException (com.github.jamesnetherton.zulip.client.exception.ZulipClientException)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 AfterEach (org.junit.jupiter.api.AfterEach)1 Test (org.junit.jupiter.api.Test)1