@@ -68,6 +68,9 @@ class ContactsTests {
6868 ],
6969 "job_title": "Software Engineer",
7070 "manager_name": "Bill",
71+ "metadata": {
72+ "key1": "sync_eligible"
73+ },
7174 "middle_name": "Jacob",
7275 "nickname": "JD",
7376 "notes": "Loves ramen",
@@ -111,6 +114,7 @@ class ContactsTests {
111114 assertEquals(" 5d3qmne77v32r8l4phyuksl2x" , contact.id)
112115 assertEquals(" Software Engineer" , contact.jobTitle)
113116 assertEquals(" Bill" , contact.managerName)
117+ assertEquals(mapOf (" key1" to " sync_eligible" ), contact.metadata)
114118 assertEquals(" Jacob" , contact.middleName)
115119 assertEquals(" JD" , contact.nickname)
116120 assertEquals(" Loves ramen" , contact.notes)
@@ -177,6 +181,29 @@ class ContactsTests {
177181 contact.physicalAddresses,
178182 )
179183 }
184+
185+ @Test
186+ fun `contact requests serialize metadata using the public wire name` () {
187+ val createAdapter = JsonHelper .moshi().adapter(CreateContactRequest ::class .java)
188+ val updateAdapter = JsonHelper .moshi().adapter(UpdateContactRequest ::class .java)
189+
190+ assertEquals(
191+ """ {"metadata":{"key1":"sync_eligible"}}""" ,
192+ createAdapter.toJson(
193+ CreateContactRequest .Builder ()
194+ .metadata(mapOf (" key1" to " sync_eligible" ))
195+ .build(),
196+ ),
197+ )
198+ assertEquals(
199+ """ {"metadata":{}}""" ,
200+ updateAdapter.toJson(
201+ UpdateContactRequest .Builder ()
202+ .metadata(emptyMap())
203+ .build(),
204+ ),
205+ )
206+ }
180207 }
181208
182209 @Nested
@@ -217,6 +244,25 @@ class ContactsTests {
217244 assertEquals(queryParams, queryParamCaptor.firstValue)
218245 }
219246
247+ @Test
248+ fun `listing contacts accepts a metadata pair query param` () {
249+ val queryParams = ListContactsQueryParams (
250+ metadataPair = mapOf (" key1" to " sync_eligible" ),
251+ )
252+
253+ contacts.list(grantId, queryParams)
254+
255+ val queryParamCaptor = argumentCaptor<ListContactsQueryParams >()
256+ verify(mockNylasClient).executeGetEncoded<ListResponse <Contact >>(
257+ any(),
258+ any(),
259+ queryParamCaptor.capture(),
260+ anyOrNull(),
261+ )
262+
263+ assertEquals(queryParams, queryParamCaptor.firstValue)
264+ }
265+
220266 @Test
221267 fun `listing contacts without query params calls requests with the correct params` () {
222268 contacts.list(grantId)
@@ -310,6 +356,7 @@ class ContactsTests {
310356 ),
311357 jobTitle = " Software Engineer" ,
312358 managerName = " Bill" ,
359+ metadata = mapOf (" key1" to " sync_eligible" ),
313360 middleName = " Jacob" ,
314361 nickname = " JD" ,
315362 notes = " Loves ramen" ,
@@ -386,6 +433,7 @@ class ContactsTests {
386433 ),
387434 jobTitle = " Software Engineer" ,
388435 managerName = " Bill" ,
436+ metadata = emptyMap(),
389437 middleName = " Jacob" ,
390438 nickname = " JD" ,
391439 notes = " Loves ramen" ,
0 commit comments