Skip to content

Commit 51dd65d

Browse files
committed
Adding Case Operation Result Data Type Class
1 parent 6af70b2 commit 51dd65d

File tree

4 files changed

+387
-0
lines changed

4 files changed

+387
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
/**
2+
* @description This class is used to represent the result body on case operations in the Public 360 API.
3+
* See the Public 360 API documentation for more information on the fields.
4+
* The class is intended to be used in conjunction with the Public 360 API.
5+
* Features:
6+
* - The class can be serialized to and deserialized from JSON.
7+
* - The class also has a `validation` method to ensure that mandatory fields are set.
8+
* - The class has a private `constructor` for use with the `fromJson` method.
9+
*
10+
* @author Kenneth Soerensen <[email protected]>, Nav
11+
* @since 0.1.0, February 2025
12+
* @group Public 360 Integration
13+
* @see [Public 360 SIF API Documentation](https://help.360online.com/ReleaseInformation/SIF%20APIs%20-%20Documentation.pdf)
14+
*/
15+
@SuppressWarnings('PMD.FieldNamingConventions')
16+
public class CaseOperationResult implements IJsonSerializable {
17+
/**
18+
* @description The `Recno` field of the case operation result.
19+
* See Public 360 API documentation for details.
20+
*
21+
* @author Kenneth Soerensen <[email protected]>, Nav
22+
* @since 0.1.0, February 2025
23+
*/
24+
public String Recno;
25+
/**
26+
* @description The `CaseNumber` field of the case operation result.
27+
* See Public 360 API documentation for details.
28+
*
29+
* @author Kenneth Soerensen <[email protected]>, Nav
30+
* @since 0.1.0, February 2025
31+
*/
32+
public String CaseNumber;
33+
/**
34+
* @description The `ImportedCaseNumber` field of the case operation result.
35+
* See Public 360 API documentation for details.
36+
*
37+
* @author Kenneth Soerensen <[email protected]>, Nav
38+
* @since 0.1.0, February 2025
39+
*/
40+
public String ImportedCaseNumber;
41+
/**
42+
* @description The `UID` field of the case operation result.
43+
* See Public 360 API documentation for details.
44+
*
45+
* @author Kenneth Soerensen <[email protected]>, Nav
46+
* @since 0.1.0, February 2025
47+
*/
48+
public String UID;
49+
/**
50+
* @description The `UIDOrigin` field of the case operation result.
51+
* See Public 360 API documentation for details.
52+
*
53+
* @author Kenneth Soerensen <[email protected]>, Nav
54+
* @since 0.1.0, February 2025
55+
*/
56+
public String UIDOrigin;
57+
/**
58+
* @description The `Successful` field of the case operation result.
59+
* See Public 360 API documentation for details.
60+
*
61+
* @author Kenneth Soerensen <[email protected]>, Nav
62+
* @since 0.1.0, February 2025
63+
*/
64+
public Boolean Successful;
65+
/**
66+
* @description The `ErrorMessage` field of the case operation result.
67+
* See Public 360 API documentation for details.
68+
*
69+
* @author Kenneth Soerensen <[email protected]>, Nav
70+
* @since 0.1.0, February 2025
71+
*/
72+
public String ErrorMessage;
73+
/**
74+
* @description The `ErrorDetails` field of the case operation result.
75+
* See Public 360 API documentation for details.
76+
*
77+
* @author Kenneth Soerensen <[email protected]>, Nav
78+
* @since 0.1.0, February 2025
79+
*/
80+
public String ErrorDetails;
81+
82+
/**
83+
* @description Private Constructor for the `CaseOperationResult` class for use with the
84+
* fromJson method.
85+
*
86+
* @author Kenneth Soerensen <[email protected]>, Nav
87+
* @since 0.1.0, February 2025
88+
*/
89+
@SuppressWarnings('PMD.EmptyStatementBlock')
90+
@TestVisible
91+
private CaseOperationResult() {
92+
}
93+
94+
/**
95+
* @description Returns a JSON representation of the object.
96+
*
97+
* @author Kenneth Soerensen <[email protected]>, Nav
98+
* @since 0.1.0, February 2025
99+
* @return `String` JSON representation of the object.
100+
*/
101+
public String toJson() {
102+
JSONGenerator gen = JSON.createGenerator(false);
103+
gen.writeStartObject();
104+
if (Recno != null) {
105+
gen.writeStringField('Recno', Recno);
106+
}
107+
if (CaseNumber != null) {
108+
gen.writeStringField('CaseNumber', CaseNumber);
109+
}
110+
if (ImportedCaseNumber != null) {
111+
gen.writeStringField('ImportedCaseNumber', ImportedCaseNumber);
112+
}
113+
if (UID != null) {
114+
gen.writeStringField('UID', UID);
115+
}
116+
if (UIDOrigin != null) {
117+
gen.writeStringField('UIDOrigin', UIDOrigin);
118+
}
119+
if (Successful != null) {
120+
gen.writeBooleanField('Successful', Successful);
121+
}
122+
if (ErrorMessage != null) {
123+
gen.writeStringField('ErrorMessage', ErrorMessage);
124+
}
125+
if (ErrorDetails != null) {
126+
gen.writeStringField('ErrorDetails', ErrorDetails);
127+
}
128+
gen.writeEndObject();
129+
130+
return gen.getAsString();
131+
}
132+
133+
/**
134+
* @description Deserializes a JSON string into an `CaseOperationResult` object instance.
135+
*
136+
* @author Kenneth Soerensen <[email protected]>, Nav
137+
* @since 0.1.0, February 2025
138+
* @param jsonString The JSON string to deserialize.
139+
* @return `CaseOperationResult` The deserialized object instance from the JSON string.
140+
*/
141+
public static CaseOperationResult fromJson(String jsonString) {
142+
return (CaseOperationResult) JSON.deserialize(
143+
jsonString,
144+
CaseOperationResult.class
145+
);
146+
}
147+
148+
/**
149+
* @description Deserializes a Map into an `CaseOperationResult` object instance.
150+
*
151+
* @author Kenneth Soerensen <[email protected]>, Nav
152+
* @since 0.1.0, January 2025
153+
* @param mapData The Map to deserialize.
154+
* @return `CaseOperationResult` The deserialized object instance from the Map.
155+
*/
156+
public static CaseOperationResult fromMap(Map<String, Object> mapData) {
157+
CaseOperationResult caseOperationResult = new CaseOperationResult();
158+
caseOperationResult.Recno = (String) mapData.get('Recno');
159+
caseOperationResult.CaseNumber = (String) mapData.get('CaseNumber');
160+
caseOperationResult.ImportedCaseNumber = (String) mapData.get(
161+
'ImportedCaseNumber'
162+
);
163+
caseOperationResult.UID = (String) mapData.get('UID');
164+
caseOperationResult.UIDOrigin = (String) mapData.get('UIDOrigin');
165+
caseOperationResult.Successful = (Boolean) mapData.get('Successful');
166+
caseOperationResult.ErrorMessage = (String) mapData.get('ErrorMessage');
167+
caseOperationResult.ErrorDetails = (String) mapData.get('ErrorDetails');
168+
169+
return caseOperationResult;
170+
}
171+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<apiVersion>62.0</apiVersion>
4+
<status>Active</status>
5+
</ApexClass>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
/**
2+
* @description Test class for `CaseOperationResultTest` class.
3+
*
4+
* @author Kenneth Soerensen <[email protected]>, Nav
5+
* @since 0.1.0, February 2025
6+
* @group Public 360 Integration
7+
* @see CaseOperationResult
8+
*/
9+
@isTest
10+
private class CaseOperationResultTest {
11+
/**
12+
* @description Test `constructor` with no parameters.
13+
*
14+
* @author Kenneth Soerensen <[email protected]>, Nav
15+
* @since 0.1.0, February 2025
16+
* @see CaseOperationResult
17+
*/
18+
@IsTest
19+
static void constructorEmpty() {
20+
CaseOperationResult caseOperationResult;
21+
22+
System.Test.startTest();
23+
caseOperationResult = new CaseOperationResult();
24+
System.Test.stopTest();
25+
26+
System.Assert.isNull(caseOperationResult.Recno, 'Recno should be null');
27+
System.Assert.isNull(
28+
caseOperationResult.CaseNumber,
29+
'CaseNumber should be null'
30+
);
31+
System.Assert.isNull(
32+
caseOperationResult.ImportedCaseNumber,
33+
'ImportedCaseNumber should be null'
34+
);
35+
System.Assert.isNull(caseOperationResult.UID, 'UID should be null');
36+
System.Assert.isNull(
37+
caseOperationResult.UIDOrigin,
38+
'UIDOrigin should be null'
39+
);
40+
System.Assert.isNull(
41+
caseOperationResult.Successful,
42+
'Successful should be null'
43+
);
44+
System.Assert.isNull(
45+
caseOperationResult.ErrorMessage,
46+
'ErrorMessage should be null'
47+
);
48+
System.Assert.isNull(
49+
caseOperationResult.ErrorDetails,
50+
'ErrorDetails should be null'
51+
);
52+
}
53+
54+
/**
55+
* @description Test `toJson` method.
56+
*
57+
* @author Kenneth Soerensen <[email protected]>, Nav
58+
* @since 0.1.0, February 2025
59+
* @see CaseOperationResult.toJson
60+
*/
61+
@IsTest
62+
static void toJson() {
63+
String recno = 'recno:1234';
64+
String caseNumber = 'caseNumber';
65+
String importedCaseNumber = 'importedCaseNumber';
66+
String uid = 'uid';
67+
String uidOrigin = 'uidOrigin';
68+
Boolean successful = true;
69+
String errorMessage = 'Error Message';
70+
String errorDetails = 'Error Details';
71+
72+
String expectedJsonString =
73+
'{"Recno":"' +
74+
recno +
75+
'","CaseNumber":"' +
76+
caseNumber +
77+
'","ImportedCaseNumber":"' +
78+
importedCaseNumber +
79+
'","UID":"' +
80+
uid +
81+
'","UIDOrigin":"' +
82+
uidOrigin +
83+
'","Successful":' +
84+
successful +
85+
',"ErrorMessage":"' +
86+
errorMessage +
87+
'","ErrorDetails":"' +
88+
errorDetails +
89+
'"}';
90+
String actualJsonString;
91+
System.Test.startTest();
92+
CaseOperationResult caseOperationResult = new CaseOperationResult();
93+
caseOperationResult.Recno = recno;
94+
caseOperationResult.CaseNumber = caseNumber;
95+
caseOperationResult.ImportedCaseNumber = importedCaseNumber;
96+
caseOperationResult.UID = uid;
97+
caseOperationResult.UIDOrigin = uidOrigin;
98+
caseOperationResult.Successful = successful;
99+
caseOperationResult.ErrorMessage = errorMessage;
100+
caseOperationResult.ErrorDetails = errorDetails;
101+
102+
actualJsonString = caseOperationResult.toJson();
103+
System.Test.stopTest();
104+
105+
System.Assert.areEqual(
106+
expectedJsonString,
107+
actualJsonString,
108+
'toJson should return a JSON string representation of the object.'
109+
);
110+
}
111+
112+
/**
113+
* @description Test `fromJson` method.
114+
*
115+
* @author Kenneth Soerensen <[email protected]>, Nav
116+
* @since 0.1.0, February 2025
117+
* @see CaseOperationResult.fromJson
118+
*/
119+
@IsTest
120+
static void fromJson() {
121+
String recno = 'recno:1234';
122+
String caseNumber = 'caseNumber';
123+
String importedCaseNumber = 'importedCaseNumber';
124+
String uid = 'uid';
125+
String uidOrigin = 'uidOrigin';
126+
Boolean successful = true;
127+
String errorMessage = 'Error Message';
128+
String errorDetails = 'Error Details';
129+
130+
CaseOperationResult caseOperationResultDataType = new CaseOperationResult();
131+
caseOperationResultDataType.Recno = recno;
132+
caseOperationResultDataType.CaseNumber = caseNumber;
133+
caseOperationResultDataType.ImportedCaseNumber = importedCaseNumber;
134+
caseOperationResultDataType.UID = uid;
135+
caseOperationResultDataType.UIDOrigin = uidOrigin;
136+
caseOperationResultDataType.Successful = successful;
137+
caseOperationResultDataType.ErrorMessage = errorMessage;
138+
caseOperationResultDataType.ErrorDetails = errorDetails;
139+
140+
String jsonString =
141+
'{"Recno":"' +
142+
recno +
143+
'","CaseNumber":"' +
144+
caseNumber +
145+
'","ImportedCaseNumber":"' +
146+
importedCaseNumber +
147+
'","UID":"' +
148+
uid +
149+
'","UIDOrigin":"' +
150+
uidOrigin +
151+
'","Successful":' +
152+
successful +
153+
',"ErrorMessage":"' +
154+
errorMessage +
155+
'","ErrorDetails":"' +
156+
errorDetails +
157+
'"}';
158+
159+
System.Test.startTest();
160+
CaseOperationResult deserializedCaseOperationResult = CaseOperationResult.fromJson(
161+
jsonString
162+
);
163+
System.Test.stopTest();
164+
165+
System.Assert.areEqual(
166+
caseOperationResultDataType.Recno,
167+
deserializedCaseOperationResult.Recno,
168+
'Recno fields should be equal'
169+
);
170+
System.Assert.areEqual(
171+
caseOperationResultDataType.CaseNumber,
172+
deserializedCaseOperationResult.CaseNumber,
173+
'CaseNumber fields should be equal'
174+
);
175+
System.Assert.areEqual(
176+
caseOperationResultDataType.ImportedCaseNumber,
177+
deserializedCaseOperationResult.ImportedCaseNumber,
178+
'ImportedCaseNumber fields should be equal'
179+
);
180+
System.Assert.areEqual(
181+
caseOperationResultDataType.UID,
182+
deserializedCaseOperationResult.UID,
183+
'UID fields should be equal'
184+
);
185+
System.Assert.areEqual(
186+
caseOperationResultDataType.UIDOrigin,
187+
deserializedCaseOperationResult.UIDOrigin,
188+
'UIDOrigin fields should be equal'
189+
);
190+
System.Assert.areEqual(
191+
caseOperationResultDataType.Successful,
192+
deserializedCaseOperationResult.Successful,
193+
'Successful fields should be equal'
194+
);
195+
System.Assert.areEqual(
196+
caseOperationResultDataType.ErrorMessage,
197+
deserializedCaseOperationResult.ErrorMessage,
198+
'ErrorMessage fields should be equal'
199+
);
200+
System.Assert.areEqual(
201+
caseOperationResultDataType.ErrorDetails,
202+
deserializedCaseOperationResult.ErrorDetails,
203+
'ErrorDetails fields should be equal'
204+
);
205+
}
206+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<apiVersion>62.0</apiVersion>
4+
<status>Active</status>
5+
</ApexClass>

0 commit comments

Comments
 (0)