Created
June 25, 2021 08:42
-
-
Save musakokcen/85fca7d2c3f5b54aff820fb25444838c to your computer and use it in GitHub Desktop.
Our unit test practices
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// 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