Skip to content

Instantly share code, notes, and snippets.

@mczachurski
Last active February 17, 2018 11:14
Show Gist options
  • Save mczachurski/52fd7d9d47efd5292e658dc457dbd43c to your computer and use it in GitHub Desktop.
Save mczachurski/52fd7d9d47efd5292e658dc457dbd43c to your computer and use it in GitHub Desktop.
func testGetUsersShouldReturnUsersCollection() {
// Arrange.
let fakeHttpRequest = FakeHTTPRequest()
let fakeHttpResponse = FakeHTTPResponse()
let fakeUsersRepository = FakeUsersRepository()
fakeUsersRepository.getUsersMock.expect(any())
fakeUsersRepository.getUsersStub.on(any(), return: [
User(id: 1, name: "John Doe", email: "[email protected]", isLocked: false),
User(id: 2, name: "Victor Doe", email: "[email protected]", isLocked: false)
])
let usersController = UsersController(usersRepository: fakeUsersRepository)
// Act.
usersController.getUsers(request: fakeHttpRequest, response: fakeHttpResponse)
// Assert.
let users = try! fakeHttpResponse.getObjectFromResponseBody(Array<User>.self)
fakeUsersRepository.getUsersMock.verify()
XCTAssertEqual(HTTPResponseStatus.ok.code, fakeHttpResponse.status.code)
XCTAssertEqual(2, users.count)
XCTAssertEqual("[email protected]", users[0].email)
XCTAssertEqual("[email protected]", users[1].email)
}
func testGetUserShouldReturnUserWhenWeProvideCorrectId() {
// Arrange.
let fakeHttpRequest = FakeHTTPRequest(urlVariables: ["id": "1"])
let fakeHttpResponse = FakeHTTPResponse()
let fakeUsersRepository = FakeUsersRepository()
fakeUsersRepository.getUserMock.expect(any())
fakeUsersRepository.getUserStub.on(equals(1), return:
User(id: 1, name: "John Doe", email: "[email protected]", isLocked: false)
)
let usersController = UsersController(usersRepository: fakeUsersRepository)
// Act.
usersController.getUser(request: fakeHttpRequest, response: fakeHttpResponse)
// Assert.
let users = try! fakeHttpResponse.getObjectFromResponseBody(User.self)
fakeUsersRepository.getUserMock.verify()
XCTAssertEqual(HTTPResponseStatus.ok.code, fakeHttpResponse.status.code)
XCTAssertEqual(1, users.id)
XCTAssertEqual("[email protected]", users.email)
}
func testGetUserShouldReturnNotFoundStatusCodeWhenWeProvideIncorrectId() {
// Arrange.
let fakeHttpRequest = FakeHTTPRequest(urlVariables: ["id": "2"])
let fakeHttpResponse = FakeHTTPResponse()
let fakeUsersRepository = FakeUsersRepository()
fakeUsersRepository.getUserMock.expect(any())
fakeUsersRepository.getUserStub.on(equals(2), return: nil)
let usersController = UsersController(usersRepository: fakeUsersRepository)
// Act.
usersController.getUser(request: fakeHttpRequest, response: fakeHttpResponse)
// Assert.
XCTAssertEqual(HTTPResponseStatus.notFound.code, fakeHttpResponse.status.code)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment