Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XCTest
- import SwiftyJSON
- class TestingConstants {
- static let userJsonExample = "{\"username\": \"testusername\",\"name\" : \"juan\", \"lastname\" : \"perez\", \"email\" : \"email@address.com\", \"birthDate\" : \"01-01-1980\"}"
- }
- class LoginViewMock {
- }
- class LoginServiceMock : LoginService{
- var didCallGetUserList = false
- override func login(username : String, password : String, completion: @escaping (User?,Error?) -> Void) {
- // Given
- let jsonString = TestingConstants.userJsonExample
- let jsonData = jsonString.data(using: .utf8)!
- let jsonResponse = try! JSON.init(data: jsonData)
- let user = User.init(json: jsonResponse)
- // Verify
- XCTAssert(user.username == "testusername")
- XCTAssert(user.name == "juan")
- XCTAssert(user.lastname == "perez")
- XCTAssert(user.email == "email@address.com")
- completion(user,nil)
- }
- override func getUserList(token : String, completion: @escaping (UserFeed?,Error?) -> Void) {
- didCallGetUserList = true
- }
- }
- class LoginTests: XCTestCase {
- var loginService : LoginServiceMock?
- var loginPresenter : LoginPresenter?
- override func setUp() {
- super.setUp()
- loginService = LoginServiceMock()
- loginPresenter = LoginPresenter.init(loginService:loginService!)
- }
- override func tearDown() {
- super.tearDown()
- }
- func testLoginFlow() {
- // Given
- let username = "testusername"
- let password = "123456"
- let expectation = self.expectation(description: "loginUser")
- // When
- loginPresenter?.loginUserSaveSessionAndGetUserList(username:username, password: password, completion: { (error) in
- expectation.fulfill()
- })
- waitForExpectations(timeout: 15, handler: nil)
- // Verify
- XCTAssert(loginService?.didCallGetUserList == true, "getUserList should have been called")
- }
- }
Add Comment
Please, Sign In to add comment