Skip to content

Instantly share code, notes, and snippets.

@musakokcen
Created June 25, 2021 08:42
Show Gist options
  • Save musakokcen/85fca7d2c3f5b54aff820fb25444838c to your computer and use it in GitHub Desktop.
Save musakokcen/85fca7d2c3f5b54aff820fb25444838c to your computer and use it in GitHub Desktop.
Our unit test practices
//
// HomeModuleTests.swift
// AppName
//
// Created by Musa Kokcen on 25.06.2021.
// Copyright © 2021 AppName. All rights reserved.
//
@testable import TargetName_Debug
import XCTest
class HomeModuleTests: XCTestCase {
var presenter: HomePresenter!
var mockRouter: MockHomeRouter!
var mockInteractor: MockHomeInteractor!
var mockView: MockHomeView!
static var homeData: HomeDataModel?
override class func setUp() {
super.setUp()
let semaphore = DispatchSemaphore(value: 0)
var error: Error?
LocalJsonLoader.shared.read(for: HomeDataModel.self, withName: "homeData") { (result) in
switch result {
case .success(let data):
HomeModuleTests.homeData = data
case .failure(let err):
error = err
}
semaphore.signal()
}
semaphore.wait()
XCTAssertNil(error)
}
override func setUpWithError() throws {
let homeData = try XCTUnwrap(HomeModuleTests.homeData)
mockRouter = MockHomeRouter()
mockInteractor = MockHomeInteractor()
mockView = MockHomeView()
presenter = HomePresenter(router: mockRouter, interactor: mockInteractor, view: mockView, data: homeData)
}
func test_viewDidLoad_success() {
XCTAssertFalse(mockView.isPrepareUICalled)
presenter.viewDidLoad()
XCTAssertTrue(mockView.isPrepareUICalled)
}
func test_numberOfRowsInTableView_success() throws {
let numberOfData = try XCTUnwrap(HomeModuleTests.homeData?.data.count)
presenter.prepareTableView()
XCTAssertEqual(presenter.numberOfRowsInTableView(), numberOfData)
}
func test_didSelectRow_success() throws {
let homeData = try XCTUnwrap(HomeModuleTests.homeData)
let randomStep = Int.random(in: 0..<homeData.data.count)
XCTAssertEqual(presenter.selectedRow(for: IndexPath(item: randomStep, section: 0)), homeData.data[randomStep])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment