Search in sources :

Example 1 with ProfileField

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

use of com.github.jamesnetherton.zulip.client.api.server.ProfileField in project zulip-java-client by jamesnetherton.

the class ZulipServerIT method customProfileFieldsCrud.

@SuppressWarnings("unchecked")
@Test
public void customProfileFieldsCrud() throws ZulipClientException {
    long simpleId = zulip.server().createCustomProfileField().withSimpleFieldType(ProfileFieldType.LONG_TEXT, "Test Long Name", "Test Long Hint").execute();
    assertTrue(simpleId > 0);
    Map<String, Map<String, String>> listData = new LinkedHashMap<>();
    Map<String, String> child = new LinkedHashMap<>();
    child.put("text", "Vim");
    child.put("order", "1");
    listData.put("vim", child);
    long listId = zulip.server().createCustomProfileField().withListOfOptionsFieldType("Test List Name", "Test List Hint", listData).execute();
    assertTrue(listId > 0);
    Map<String, String> externalData = new LinkedHashMap<>();
    externalData.put("subtype", "github");
    long externalId = zulip.server().createCustomProfileField().withExternalAccountFieldType(externalData).execute();
    assertTrue(externalId > 0);
    List<ProfileField> profileFields = zulip.server().getCustomProfileFields().execute();
    assertEquals(3, profileFields.size());
    List<Integer> order = new ArrayList<>();
    for (ProfileField field : profileFields) {
        if (field.getId() == simpleId) {
            assertEquals("Test Long Hint", field.getHint());
            assertEquals("Test Long Name", field.getName());
            assertTrue(field.getOrder() > 0);
            assertEquals(ProfileFieldType.LONG_TEXT, field.getType());
            assertEquals("", field.getFieldData());
            order.add(field.getOrder());
        } else if (field.getId() == listId) {
            assertEquals("Test List Hint", field.getHint());
            assertEquals("Test List Name", field.getName());
            assertTrue(field.getOrder() > 0);
            assertEquals(ProfileFieldType.LIST_OF_OPTIONS, field.getType());
            Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) field.getFieldData();
            assertEquals(1, data.size());
            Map<String, String> vim = data.get("vim");
            assertNotNull(vim);
            assertEquals(2, vim.size());
            assertEquals("Vim", vim.get("text"));
            assertEquals("1", vim.get("order"));
            order.add(field.getOrder());
        } else if (field.getId() == externalId) {
            assertEquals("Enter your GitHub username", field.getHint());
            assertEquals("GitHub", field.getName());
            assertTrue(field.getOrder() > 0);
            assertEquals(ProfileFieldType.EXTERNAL_ACCOUNT, field.getType());
            Map<String, String> data = (Map<String, String>) field.getFieldData();
            assertEquals(1, data.size());
            assertEquals("github", data.get("subtype"));
            order.add(field.getOrder());
        } else {
            fail("Unexpected profile entry found");
        }
    }
    Collections.reverse(order);
    zulip.server().reorderCustomProfileFields(order.get(0), order.get(1), order.get(2)).execute();
    zulip.server().deleteCustomProfileField(simpleId).execute();
    zulip.server().deleteCustomProfileField(listId).execute();
    zulip.server().deleteCustomProfileField(externalId).execute();
}
Also used : ProfileField(com.github.jamesnetherton.zulip.client.api.server.ProfileField) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) Test(org.junit.jupiter.api.Test)

Aggregations

ProfileField (com.github.jamesnetherton.zulip.client.api.server.ProfileField)2 Draft (com.github.jamesnetherton.zulip.client.api.draft.Draft)1 Message (com.github.jamesnetherton.zulip.client.api.message.Message)1 Stream (com.github.jamesnetherton.zulip.client.api.stream.Stream)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 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 AfterEach (org.junit.jupiter.api.AfterEach)1 Test (org.junit.jupiter.api.Test)1