|
| 1 | +package test_locally.api.util.json; |
| 2 | + |
| 3 | +import com.google.gson.Gson; |
| 4 | +import com.slack.api.methods.response.conversations.ConversationsRepliesResponse; |
| 5 | +import com.slack.api.model.list.ListRecord; |
| 6 | +import com.slack.api.util.json.GsonFactory; |
| 7 | +import org.junit.Test; |
| 8 | + |
| 9 | +import static org.hamcrest.CoreMatchers.is; |
| 10 | +import static org.hamcrest.MatcherAssert.assertThat; |
| 11 | + |
| 12 | +public class GsonListRecordFieldFactoryTest { |
| 13 | + |
| 14 | + private final Gson gson = GsonFactory.createSnakeCase(); |
| 15 | + |
| 16 | + private static String repliesWithListRecordFieldMessage(String messageJson) { |
| 17 | + return "{\n" + |
| 18 | + " \"ok\": true,\n" + |
| 19 | + " \"messages\": [\n" + |
| 20 | + " {\n" + |
| 21 | + " \"type\": \"message\",\n" + |
| 22 | + " \"subtype\": \"bot_message\",\n" + |
| 23 | + " \"ts\": \"1700000001.000200\",\n" + |
| 24 | + " \"text\": \"Request has been marked Completed.\",\n" + |
| 25 | + " \"attachments\": [\n" + |
| 26 | + " {\n" + |
| 27 | + " \"id\": 1,\n" + |
| 28 | + " \"list_record\": {\n" + |
| 29 | + " \"record\": {\n" + |
| 30 | + " \"fields\": [\n" + |
| 31 | + " {\n" + |
| 32 | + " \"key\": \"Col1\",\n" + |
| 33 | + " \"column_id\": \"Col1\",\n" + |
| 34 | + " \"value\": \"https://example.com\",\n" + |
| 35 | + " \"message\": " + messageJson + "\n" + |
| 36 | + " }\n" + |
| 37 | + " ]\n" + |
| 38 | + " }\n" + |
| 39 | + " }\n" + |
| 40 | + " }\n" + |
| 41 | + " ]\n" + |
| 42 | + " }\n" + |
| 43 | + " ]\n" + |
| 44 | + "}"; |
| 45 | + } |
| 46 | + |
| 47 | + private ListRecord.Field firstField(String json) { |
| 48 | + ConversationsRepliesResponse response = gson.fromJson(json, ConversationsRepliesResponse.class); |
| 49 | + return response.getMessages().get(0).getAttachments().get(0) |
| 50 | + .getListRecord().getRecord().getFields().get(0); |
| 51 | + } |
| 52 | + |
| 53 | + @Test |
| 54 | + public void conversationsReplies_messageAsArray() { |
| 55 | + ListRecord.Field field = firstField(repliesWithListRecordFieldMessage( |
| 56 | + "[{\"value\": \"https://example.com\", \"channel_id\": \"C111\", \"ts\": \"1700000000.000100\"}," + |
| 57 | + " {\"value\": \"https://example.com/2\", \"channel_id\": \"C111\", \"ts\": \"1700000000.000300\"}]")); |
| 58 | + |
| 59 | + assertThat(field.getMessages().size(), is(2)); |
| 60 | + assertThat(field.getMessages().get(1).getTs(), is("1700000000.000300")); |
| 61 | + assertThat(field.getMessage().getTs(), is("1700000000.000100")); |
| 62 | + } |
| 63 | + |
| 64 | + @Test |
| 65 | + public void conversationsReplies_messageAsObject() { |
| 66 | + ListRecord.Field field = firstField(repliesWithListRecordFieldMessage( |
| 67 | + "{\"text\": \"hello\", \"ts\": \"1700000000.000100\"}")); |
| 68 | + |
| 69 | + assertThat(field.getMessage().getText(), is("hello")); |
| 70 | + assertThat(field.getMessages().size(), is(1)); |
| 71 | + } |
| 72 | +} |
0 commit comments