Skip to content

Commit 5f4d89d

Browse files
authored
TT-4463: Java add search-by-metadata-pair on list-messages (#319)
1 parent e98cc6b commit 5f4d89d

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

src/main/kotlin/com/nylas/models/ListMessagesQueryParams.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ data class ListMessagesQueryParams(
9494
*/
9595
@Json(name = "search_query_native")
9696
val searchQueryNative: String? = null,
97+
/**
98+
* Pass in your metadata key and value pair to search for metadata.
99+
*/
100+
@Json(name = "metadata_pair")
101+
val metadataPair: Map<String, String>? = null,
97102
) : IQueryParams {
98103
class Builder {
99104
private var limit: Int? = null
@@ -113,6 +118,7 @@ data class ListMessagesQueryParams(
113118
private var hasAttachment: Boolean? = null
114119
private var fields: MessageFields? = null
115120
private var searchQueryNative: String? = null
121+
private var metadataPair: Map<String, String>? = null
116122

117123
/**
118124
* Sets the maximum number of objects to return.
@@ -236,6 +242,13 @@ data class ListMessagesQueryParams(
236242
*/
237243
fun searchQueryNative(searchQueryNative: String?) = apply { this.searchQueryNative = searchQueryNative }
238244

245+
/**
246+
* Set the metadata key and value pair to search for metadata.
247+
* @param metadataPair The metadata key and value pair to search for metadata.
248+
* @return The builder
249+
*/
250+
fun metadataPair(metadataPair: Map<String, String>?) = apply { this.metadataPair = metadataPair }
251+
239252
/**
240253
* Builds the [ListMessagesQueryParams] object.
241254
* @return The [ListMessagesQueryParams] object.
@@ -258,6 +271,7 @@ data class ListMessagesQueryParams(
258271
hasAttachment = hasAttachment,
259272
fields = fields,
260273
searchQueryNative = searchQueryNative,
274+
metadataPair = metadataPair,
261275
)
262276
}
263277
}

src/test/kotlin/com/nylas/resources/MessagesTests.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,31 @@ class MessagesTests {
288288
assertEquals(queryParams, queryParamCaptor.firstValue)
289289
}
290290

291+
@Test
292+
fun `listing messages with metadata_pair calls requests with the correct params`() {
293+
val queryParams =
294+
ListMessagesQueryParams(
295+
metadataPair = mapOf("campaign" to "welcome-email"),
296+
)
297+
298+
messages.list(grantId, queryParams)
299+
300+
val pathCaptor = argumentCaptor<String>()
301+
val typeCaptor = argumentCaptor<Type>()
302+
val queryParamCaptor = argumentCaptor<IQueryParams>()
303+
val overrideParamCaptor = argumentCaptor<RequestOverrides>()
304+
verify(mockNylasClient).executeGet<ListResponse<Message>>(
305+
pathCaptor.capture(),
306+
typeCaptor.capture(),
307+
queryParamCaptor.capture(),
308+
overrideParamCaptor.capture(),
309+
)
310+
311+
assertEquals("v3/grants/$grantId/messages", pathCaptor.firstValue)
312+
assertEquals(Types.newParameterizedType(ListResponse::class.java, Message::class.java), typeCaptor.firstValue)
313+
assertEquals(queryParams, queryParamCaptor.firstValue)
314+
}
315+
291316
@Test
292317
fun `listing messages without query params calls requests with the correct params`() {
293318
messages.list(grantId)

0 commit comments

Comments
 (0)