99import XCTest
1010@testable import HttpUtility
1111
12+
13+ struct MyStruct : Encodable
14+ {
15+ let name , lastName : String
16+ }
17+
1218class HttpUtilityIntegrationTests : XCTestCase {
1319
1420 private typealias Employees = [ EmployeeResponse ]
@@ -156,31 +162,24 @@ class HttpUtilityIntegrationTests: XCTestCase {
156162 // ARRANGE
157163 let expectation = XCTestExpectation ( description: " Multipart form data test " )
158164 let requestUrl = URL ( string: " https://api-dev-scus-demo.azurewebsites.net/TestMultiPart " )
159- let name = " Code "
160- let lastName = " Cat "
161165
162- // todo: this code can be improved
163- let multiPartFormData = HUMultiPartFormData ( )
164- multiPartFormData. appendInitalBoundary ( ) // what if the developer forgets to add this line?
165- multiPartFormData. appendBodyPart ( parameterName: " Name " , WithParameterData: name)
166- multiPartFormData. appendLineBreakForNextParameter ( ) // I don't like this
167- multiPartFormData. appendBodyPart ( parameterName: " LastName " , WithParameterData: lastName)
168- multiPartFormData. appendClosingBoundary ( ) // why does the dev has to specify all this???
166+ // request parameter structure that inherits from Encodable
167+ let myStruct = MyStruct ( name: " Bruce " , lastName: " Wayne " )
169168
170- let request = HURequest ( url: requestUrl!, method: . post)
169+ // HURequest object containing information about the type of API call with request object
170+ let huRequest = HURequest ( url: requestUrl!, method: . post, request: myStruct)
171171
172172 // ACT
173- _utility. requestWithMultiPart ( request: request, resultType: TestMultiPartResponse . self, postBody: multiPartFormData) { ( response) in
174- // ASSERT
173+ _utility. requestWithMultiPartFormData ( huRequest: huRequest, responseType: TestMultiPartResponse . self) { ( response) in
175174 switch response
176175 {
177176 case . success( let serviceResponse) :
178177
179178 // ASSERT
180179 XCTAssertNotNil ( serviceResponse)
181180 XCTAssertNotNil ( serviceResponse? . data)
182- XCTAssertEqual ( name, serviceResponse? . data. name)
183- XCTAssertEqual ( lastName, serviceResponse? . data. lastName)
181+ XCTAssertEqual ( myStruct . name, serviceResponse? . data. name)
182+ XCTAssertEqual ( myStruct . lastName, serviceResponse? . data. lastName)
184183
185184 case . failure( let error) :
186185 XCTAssertNil ( error. reason)
@@ -196,35 +195,13 @@ class HttpUtilityIntegrationTests: XCTestCase {
196195 // ARRANGE
197196 let expectation = XCTestExpectation ( description: " Multipart form data test " )
198197 let requestUrl = URL ( string: " https://api-dev-scus-demo.azurewebsites.net/api/Employee/MultiPartCodeChallenge " )
199- let multiPartFormData = HUMultiPartFormData ( )
200-
201- multiPartFormData. appendInitalBoundary ( )
202-
203- multiPartFormData. appendBodyPart ( parameterName: " Name " , WithParameterData: " Codecat " )
204- multiPartFormData. appendLineBreakForNextParameter ( )
205-
206- multiPartFormData. appendBodyPart ( parameterName: " LastName " , WithParameterData: " HellWorld " )
207- multiPartFormData. appendLineBreakForNextParameter ( )
208-
209- multiPartFormData. appendBodyPart ( parameterName: " DateofJoining " , WithParameterData: " 12-12-2012 " )
210- multiPartFormData. appendLineBreakForNextParameter ( )
211-
212- multiPartFormData. appendBodyPart ( parameterName: " DateofBirth " , WithParameterData: " 12-12-1992 " )
213- multiPartFormData. appendLineBreakForNextParameter ( )
214-
215- multiPartFormData. appendBodyPart ( parameterName: " Gender " , WithParameterData: " HumanBeing " )
216- multiPartFormData. appendLineBreakForNextParameter ( )
217-
218- multiPartFormData. appendBodyPart ( parameterName: " DepartmentName " , WithParameterData: " Technology " )
219- multiPartFormData. appendLineBreakForNextParameter ( )
220198
221- multiPartFormData. appendBodyPart ( parameterName: " ManagerName " , WithParameterData: " MyManagerName " )
222- multiPartFormData. appendClosingBoundary ( )
199+ let multiPartFormRequest = MultiPartFormRequest ( name: " Bruce " , lastName: " Wayne " , gender: " Male " , departmentName: " Tech " , managerName: " James Gordan " , dateOfJoining: " 01-09-2020 " , dateOfBirth: " 07-07-1988 " )
223200
224- let request = HURequest ( url: requestUrl!, method: . post)
201+ let request = HURequest ( url: requestUrl!, method: . post, request : multiPartFormRequest )
225202
226203 // ACT
227- _utility. requestWithMultiPart ( request : request, resultType : MultiPartResponse . self, postBody : multiPartFormData ) { ( response) in
204+ _utility. requestWithMultiPartFormData ( huRequest : request, responseType : MultiPartResponse . self) { ( response) in
228205 // ASSERT
229206 switch response
230207 {
0 commit comments