Skip to content

Commit 6542f40

Browse files
committed
added test cases and few fixes for crete custom metaData
1 parent 61ae183 commit 6542f40

File tree

3 files changed

+269
-28
lines changed

3 files changed

+269
-28
lines changed

README.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,10 +882,12 @@ System.out.println(result.getResponseMetaData().getMap());
882882

883883
**24. Create CustomMetaDataFields**
884884

885-
It creates the CustomMetaDataFields as per the
885+
It creates the CustomMetaDataFields with many available types with param name `type` as per the
886886
[API documentation here](https://docs.imagekit.io/api-reference/custom-metadata-fields-api/create-custom-metadata-field).
887887
The argument to the `createCustomMetaDataFields()` method is the object of `CustomMetaDataFieldCreateRequest` class.
888888

889+
#### Examples:
890+
889891
```java
890892
CustomMetaDataFieldSchemaObject schemaObject = new CustomMetaDataFieldSchemaObject();
891893
schemaObject.setType("Number");
@@ -904,6 +906,53 @@ System.out.println("Map Response:");
904906
System.out.println(resultCustomMetaDataField.getResponseMetaData().getMap());
905907
```
906908

909+
- MultiSelect type Exmample:
910+
911+
```java
912+
List<Object> objectList = new ArrayList<>();
913+
objectList.add("small");
914+
objectList.add(30);
915+
objectList.add(40);
916+
objectList.add(true);
917+
918+
List<Object> defaultValueObject = new ArrayList<>();
919+
defaultValueObject.add("small");
920+
defaultValueObject.add(30);
921+
defaultValueObject.add(true);
922+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
923+
customMetaDataFieldSchemaObject.setType("MultiSelect");
924+
customMetaDataFieldSchemaObject.setValueRequired(true); // optional
925+
customMetaDataFieldSchemaObject.setDefaultValue(defaultValueObject); // required if isValueRequired set to true
926+
customMetaDataFieldSchemaObject.setSelectOptions(objectList);
927+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
928+
customMetaDataFieldCreateRequest.setName("Name-MultiSelect");
929+
customMetaDataFieldCreateRequest.setLabel("Label-MultiSelect");
930+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
931+
932+
ResultCustomMetaDataField resultCustomMetaDataField = ImageKit.getInstance()
933+
.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
934+
```
935+
936+
- Date type Exmample:
937+
938+
```java
939+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
940+
customMetaDataFieldSchemaObject.setType("Date");
941+
customMetaDataFieldSchemaObject.setValueRequired(true); // optional
942+
customMetaDataFieldSchemaObject.setDefaultValue("2022-11-30T10:11:10+00:00"); // required if isValueRequired set to true
943+
customMetaDataFieldSchemaObject.setMinValue("2022-11-30T10:11:10+00:00");
944+
customMetaDataFieldSchemaObject.setMaxValue("2022-12-30T10:11:10+00:00");
945+
946+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
947+
customMetaDataFieldCreateRequest.setName("Name");
948+
customMetaDataFieldCreateRequest.setLabel("Label");
949+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
950+
951+
ResultCustomMetaDataField resultCustomMetaDataField = ImageKit.getInstance()
952+
.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
953+
```
954+
955+
907956
**25. Get CustomMetaDataFields**
908957

909958
fetches the metadata as per the
Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
11
package io.imagekit.sdk.models;
22

3-
import java.util.List;
4-
53
public class CustomMetaDataFieldSchemaObject {
64
private CustomMetaDataTypeEnum type;
7-
private List<String> selectOptions;
8-
private String defaultValue;
5+
private Object selectOptions;
6+
private Object defaultValue;
97
private Boolean isValueRequired;
10-
private Integer minValue;
11-
private Integer maxValue;
8+
private Object minValue;
9+
private Object maxValue;
1210
private Integer minLength;
1311
private Integer maxLength;
1412

1513
public CustomMetaDataFieldSchemaObject() {
1614

1715
}
1816

19-
public CustomMetaDataFieldSchemaObject(CustomMetaDataTypeEnum type, boolean isValueRequired, int minValue,
20-
int maxValue) {
21-
this.type = type;
22-
this.isValueRequired = isValueRequired;
23-
this.minValue = minValue;
24-
this.maxValue = maxValue;
25-
}
26-
2717
public CustomMetaDataTypeEnum getType() {
2818
return type;
2919
}
@@ -32,43 +22,43 @@ public void setType(CustomMetaDataTypeEnum type) {
3222
this.type = type;
3323
}
3424

35-
public List<String> getSelectOptions() {
25+
public Object getSelectOptions() {
3626
return selectOptions;
3727
}
3828

39-
public void setSelectOptions(List<String> selectOptions) {
29+
public void setSelectOptions(Object selectOptions) {
4030
this.selectOptions = selectOptions;
4131
}
4232

43-
public String getDefaultValue() {
33+
public Object getDefaultValue() {
4434
return defaultValue;
4535
}
4636

47-
public void setDefaultValue(String defaultValue) {
37+
public void setDefaultValue(Object defaultValue) {
4838
this.defaultValue = defaultValue;
4939
}
5040

51-
public boolean isValueRequired() {
41+
public Boolean getValueRequired() {
5242
return isValueRequired;
5343
}
5444

55-
public void setValueRequired(boolean valueRequired) {
45+
public void setValueRequired(Boolean valueRequired) {
5646
isValueRequired = valueRequired;
5747
}
5848

59-
public Integer getMinValue() {
49+
public Object getMinValue() {
6050
return minValue;
6151
}
6252

63-
public void setMinValue(Integer minValue) {
53+
public void setMinValue(Object minValue) {
6454
this.minValue = minValue;
6555
}
6656

67-
public Integer getMaxValue() {
57+
public Object getMaxValue() {
6858
return maxValue;
6959
}
7060

71-
public void setMaxValue(Integer maxValue) {
61+
public void setMaxValue(Object maxValue) {
7262
this.maxValue = maxValue;
7363
}
7464

@@ -90,8 +80,15 @@ public void setMaxLength(Integer maxLength) {
9080

9181
@Override
9282
public String toString() {
93-
return "{" + "type=" + '"' + type + '"' + ", selectOptions=" + '"' + selectOptions + '"' + ", defaultValue="
94-
+ '"' + defaultValue + '"' + ", isValueRequired=" + isValueRequired + ", minValue=" + minValue
95-
+ ", maxValue=" + maxValue + ", minLength=" + minLength + ", maxLength=" + maxLength + '}';
83+
return "CustomMetaDataFieldSchemaObject{" +
84+
"type=" + type +
85+
", selectOptions=" + selectOptions +
86+
", defaultValue=" + defaultValue +
87+
", isValueRequired=" + isValueRequired +
88+
", minValue=" + minValue +
89+
", maxValue=" + maxValue +
90+
", minLength=" + minLength +
91+
", maxLength=" + maxLength +
92+
'}';
9693
}
9794
}

imagekit-sdk/src/test/java/io/imagekit/sdk/manage/CustomMetaDataFieldTest.java

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.junit.Test;
2020

2121
import java.io.IOException;
22+
import java.util.ArrayList;
23+
import java.util.List;
2224

2325
import static org.junit.Assert.assertEquals;
2426

@@ -165,6 +167,199 @@ public void createCustomMetaDataFields_successExpected_type_Textarea()
165167
assertEquals(RestClient.API_BASE_URL.concat("v1/customMetadataFields"), request.getRequestUrl().toString());
166168
}
167169

170+
@Test
171+
public void createCustomMetaDataFields_successExpected_type_Date()
172+
throws InterruptedException, IOException, BadRequestException, UnknownException {
173+
174+
MockWebServer server = new MockWebServer();
175+
server.enqueue(new MockResponse().setBody("{\n" +
176+
" \"id\": \"62c2d18da6f0abb293b3941a\",\n" +
177+
" \"name\": \"name\",\n" +
178+
" \"label\": \"label\",\n" +
179+
" \"schema\": {\n" +
180+
" \"type\": \"Date\",\n" +
181+
" \"minValue\": \"2022-11-30T10:11:10+00:00\",\n" +
182+
" \"maxValue\": \"2022-12-30T10:11:10+00:00\"\n" +
183+
" }\n" +
184+
"}"));
185+
server.start();
186+
RestClient.API_BASE_URL = server.url("/").toString();
187+
188+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
189+
customMetaDataFieldSchemaObject.setType(CustomMetaDataTypeEnum.Date);
190+
customMetaDataFieldSchemaObject.setMinValue("2022-11-30T10:11:10+00:00");
191+
customMetaDataFieldSchemaObject.setMaxValue("2022-12-30T10:11:10+00:00");
192+
193+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
194+
customMetaDataFieldCreateRequest.setName("Name");
195+
customMetaDataFieldCreateRequest.setLabel("Label");
196+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
197+
198+
SUT.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
199+
RecordedRequest request = server.takeRequest();
200+
201+
String customMetaDataFieldCreateRequestJson = "{\"name\":\"Name\",\"label\":\"Label\",\"schema\":{\"type\":\"Date\",\"minValue\":\"2022-11-30T10:11:10+00:00\",\"maxValue\":\"2022-12-30T10:11:10+00:00\"}}";
202+
String utf8RequestBody = request.getBody().readUtf8();
203+
assertEquals(customMetaDataFieldCreateRequestJson, utf8RequestBody);
204+
assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type"));
205+
assertEquals("POST /v1/customMetadataFields HTTP/1.1", request.getRequestLine());
206+
assertEquals(RestClient.API_BASE_URL.concat("v1/customMetadataFields"), request.getRequestUrl().toString());
207+
}
208+
209+
@Test
210+
public void createCustomMetaDataFields_successExpected_type_Boolean()
211+
throws InterruptedException, IOException, BadRequestException, UnknownException {
212+
213+
MockWebServer server = new MockWebServer();
214+
server.enqueue(new MockResponse().setBody("{\n" +
215+
" \"id\": \"62c2e4268eed64d4a80c585a\",\n" +
216+
" \"name\": \"Name\",\n" +
217+
" \"label\": \"Label\",\n" +
218+
" \"schema\": {\n" +
219+
" \"type\": \"Boolean\",\n" +
220+
" \"isValueRequired\": true,\n" +
221+
" \"defaultValue\": true\n" +
222+
" }\n" +
223+
"}"));
224+
server.start();
225+
RestClient.API_BASE_URL = server.url("/").toString();
226+
227+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
228+
customMetaDataFieldSchemaObject.setType(CustomMetaDataTypeEnum.Boolean);
229+
customMetaDataFieldSchemaObject.setValueRequired(true);
230+
customMetaDataFieldSchemaObject.setDefaultValue(true);
231+
232+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
233+
customMetaDataFieldCreateRequest.setName("Name");
234+
customMetaDataFieldCreateRequest.setLabel("Label");
235+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
236+
237+
SUT.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
238+
RecordedRequest request = server.takeRequest();
239+
240+
String customMetaDataFieldCreateRequestJson = "{\"name\":\"Name\",\"label\":\"Label\",\"schema\":{\"type\":\"Boolean\",\"defaultValue\":true,\"isValueRequired\":true}}";
241+
String utf8RequestBody = request.getBody().readUtf8();
242+
assertEquals(customMetaDataFieldCreateRequestJson, utf8RequestBody);
243+
assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type"));
244+
assertEquals("POST /v1/customMetadataFields HTTP/1.1", request.getRequestLine());
245+
assertEquals(RestClient.API_BASE_URL.concat("v1/customMetadataFields"), request.getRequestUrl().toString());
246+
}
247+
248+
@Test
249+
public void createCustomMetaDataFields_successExpected_type_SingleSelect()
250+
throws InterruptedException, IOException, BadRequestException, UnknownException {
251+
252+
MockWebServer server = new MockWebServer();
253+
server.enqueue(new MockResponse().setBody("{\n" +
254+
" \"id\": \"62c2cfe2a6f0ab95fcb3640f\",\n" +
255+
" \"name\": \"Name\",\n" +
256+
" \"label\": \"Label\",\n" +
257+
" \"schema\": {\n" +
258+
" \"type\": \"SingleSelect\",\n" +
259+
" \"selectOptions\": [\n" +
260+
" \"small\",\n" +
261+
" \"medium\",\n" +
262+
" \"large\",\n" +
263+
" 30,\n" +
264+
" 40,\n" +
265+
" true\n" +
266+
" ]\n" +
267+
" }\n" +
268+
"}"));
269+
server.start();
270+
RestClient.API_BASE_URL = server.url("/").toString();
271+
272+
List<Object> objectList = new ArrayList<>();
273+
objectList.add("small");
274+
objectList.add("medium");
275+
objectList.add("large");
276+
objectList.add(30);
277+
objectList.add(40);
278+
objectList.add(true);
279+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
280+
customMetaDataFieldSchemaObject.setType(CustomMetaDataTypeEnum.SingleSelect);
281+
customMetaDataFieldSchemaObject.setSelectOptions(objectList);
282+
283+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
284+
customMetaDataFieldCreateRequest.setName("Name");
285+
customMetaDataFieldCreateRequest.setLabel("Label");
286+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
287+
288+
SUT.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
289+
RecordedRequest request = server.takeRequest();
290+
291+
String customMetaDataFieldCreateRequestJson = "{\"name\":\"Name\",\"label\":\"Label\",\"schema\":{\"type\":\"SingleSelect\",\"selectOptions\":[\"small\",\"medium\",\"large\",30,40,true]}}";
292+
String utf8RequestBody = request.getBody().readUtf8();
293+
assertEquals(customMetaDataFieldCreateRequestJson, utf8RequestBody);
294+
assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type"));
295+
assertEquals("POST /v1/customMetadataFields HTTP/1.1", request.getRequestLine());
296+
assertEquals(RestClient.API_BASE_URL.concat("v1/customMetadataFields"), request.getRequestUrl().toString());
297+
}
298+
299+
@Test
300+
public void createCustomMetaDataFields_successExpected_type_MultiSelect()
301+
throws InterruptedException, IOException, BadRequestException, UnknownException {
302+
303+
MockWebServer server = new MockWebServer();
304+
server.enqueue(new MockResponse().setBody("{\n" +
305+
" \"id\": \"62c2d3c5a6f0ab2330b3b0b2\",\n" +
306+
" \"name\": \"Name\",\n" +
307+
" \"label\": \"Label\",\n" +
308+
" \"schema\": {\n" +
309+
" \"isValueRequired\": true,\n" +
310+
" \"defaultValue\": [\n" +
311+
" \"small\",\n" +
312+
" 30,\n" +
313+
" true\n" +
314+
" ],\n" +
315+
" \"type\": \"MultiSelect\",\n" +
316+
" \"selectOptions\": [\n" +
317+
" \"small\",\n" +
318+
" \"medium\",\n" +
319+
" \"large\",\n" +
320+
" 30,\n" +
321+
" 40,\n" +
322+
" true\n" +
323+
" ]\n" +
324+
" }\n" +
325+
"}"));
326+
server.start();
327+
RestClient.API_BASE_URL = server.url("/").toString();
328+
329+
List<Object> objectList = new ArrayList<>();
330+
objectList.add("small");
331+
objectList.add("medium");
332+
objectList.add("large");
333+
objectList.add(30);
334+
objectList.add(40);
335+
objectList.add(true);
336+
337+
List<Object> defaultValueObject = new ArrayList<>();
338+
defaultValueObject.add("small");
339+
defaultValueObject.add(30);
340+
defaultValueObject.add(true);
341+
CustomMetaDataFieldSchemaObject customMetaDataFieldSchemaObject = new CustomMetaDataFieldSchemaObject();
342+
customMetaDataFieldSchemaObject.setType(CustomMetaDataTypeEnum.MultiSelect);
343+
customMetaDataFieldSchemaObject.setValueRequired(true);
344+
customMetaDataFieldSchemaObject.setDefaultValue(defaultValueObject);
345+
customMetaDataFieldSchemaObject.setSelectOptions(objectList);
346+
347+
CustomMetaDataFieldCreateRequest customMetaDataFieldCreateRequest = new CustomMetaDataFieldCreateRequest();
348+
customMetaDataFieldCreateRequest.setName("Name");
349+
customMetaDataFieldCreateRequest.setLabel("Label");
350+
customMetaDataFieldCreateRequest.setSchema(customMetaDataFieldSchemaObject);
351+
352+
SUT.createCustomMetaDataFields(customMetaDataFieldCreateRequest);
353+
RecordedRequest request = server.takeRequest();
354+
355+
String customMetaDataFieldCreateRequestJson = "{\"name\":\"Name\",\"label\":\"Label\",\"schema\":{\"type\":\"MultiSelect\",\"selectOptions\":[\"small\",\"medium\",\"large\",30,40,true],\"defaultValue\":[\"small\",30,true],\"isValueRequired\":true}}";
356+
String utf8RequestBody = request.getBody().readUtf8();
357+
assertEquals(customMetaDataFieldCreateRequestJson, utf8RequestBody);
358+
assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type"));
359+
assertEquals("POST /v1/customMetadataFields HTTP/1.1", request.getRequestLine());
360+
assertEquals(RestClient.API_BASE_URL.concat("v1/customMetadataFields"), request.getRequestUrl().toString());
361+
}
362+
168363
@Test(expected = NotFoundException.class)
169364
public void deleteCustomMetaDataField_404_Expected()
170365
throws IOException, InterruptedException, NotFoundException, UnknownException {

0 commit comments

Comments
 (0)