This file contains hidden or 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
import XCTest | |
@testable import FootballGather | |
final class GatherInteractorTests: XCTestCase { | |
// MARK: - Configure | |
func testSelectRows_whenRequestIsGiven_presentsSelectedTime() { | |
// given | |
let mockSelectedTime = GatherTime(minutes: 25, seconds: 54) | |
let mockTimeHandler = GatherTimeHandler(selectedTime: mockSelectedTime) |
This file contains hidden or 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
import XCTest | |
@testable import FootballGather | |
// MARK: - Presenter | |
final class GatherMockPresenter: GatherPresenterProtocol { | |
var view: GatherViewProtocol? | |
weak var expectation: XCTestExpectation? = nil | |
var numberOfUpdateCalls = 1 |
This file contains hidden or 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
final class PlayerListPresenter: PlayerListPresentable { | |
// MARK: - Properties | |
weak var view: PlayerListViewProtocol? | |
private var viewState: PlayerListViewState | |
private var viewStateDetails: PlayerListViewStateDetails { | |
PlayerListViewStateDetailsFactory.makeViewStateDetails(from: viewState) | |
} |
This file contains hidden or 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
// MARK: - PlayerDetailDelegate | |
extension PlayerListInteractor: PlayerDetailDelegate { | |
func didUpdate(player: PlayerResponseModel) { | |
guard let index = players.firstIndex(of: player) else { | |
return | |
} | |
players[index] = player | |
let response = PlayerList.FetchPlayers.Response(players: players, |
This file contains hidden or 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
// MARK: - PlayerListInteractor | |
final class PlayerListInteractor: PlayerListInteractable { | |
var presenter: PlayerListPresenterProtocol | |
private let playersService: StandardNetworkService | |
private var players: [PlayerResponseModel] = [] | |
private static let minimumPlayersToPlay = 2 | |
init(presenter: PlayerListPresenterProtocol = PlayerListPresenter(), |
This file contains hidden or 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
extension PlayerListViewController: UITableViewDelegate, UITableViewDataSource { | |
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
displayedPlayers.count | |
} | |
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
guard let cell: PlayerTableViewCell = tableView.dequeueReusableCell(withIdentifier: "PlayerTableViewCell") as? PlayerTableViewCell else { | |
return UITableViewCell() | |
} |
This file contains hidden or 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
func displayFetchedPlayers(viewModel: PlayerList.FetchPlayers.ViewModel) { | |
displayedPlayers = viewModel.displayedPlayers | |
showEmptyViewIfRequired() | |
setBarButtonState(isEnabled: !playersCollectionIsEmpty) | |
reloadData() | |
} |
This file contains hidden or 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
// MARK: - Selectors | |
@objc private func selectPlayers() { | |
let request = PlayerList.SelectPlayers.Request() | |
interactor.selectPlayers(request: request) | |
} | |
@IBAction private func confirmOrAddPlayers(_ sender: Any) { | |
let request = PlayerList.ConfirmOrAddPlayers.Request() | |
interactor.confirmOrAddPlayers(request: request) | |
} |
This file contains hidden or 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
override func viewDidLoad() { | |
super.viewDidLoad() | |
setupView() | |
fetchPlayers() | |
} | |
private func setupView() { | |
configureTitle("Players") | |
setupBarButtonItem(title: "Select") |
This file contains hidden or 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
var interactor: PlayerListInteractorProtocol = PlayerListInteractor() | |
var router: PlayerListRouterProtocol = PlayerListRouter() | |
private var displayedPlayers: [PlayerList.FetchPlayers.ViewModel.DisplayedPlayer] = [] |