Skip to content

Instantly share code, notes, and snippets.

View arifinfrds's full-sized avatar

Arifin Firdaus arifinfrds

View GitHub Profile
//
// CharactersViewModelTests.swift
// RickyAndMortyCharacterTests
//
// Created by Arifin Firdaus on 13/02/23.
//
import Combine
import XCTest
@testable import RickyAndMortyCharacter
import UIKit
import SwiftUI
private let incomeOutcomeOptions: [String] = ["Income", "Outcome"]
private let categoryOptions: [Transaction.Category] = [.education, .food, .transport, .shopping, .software, .gift, .payment, .game, .transport, .medical]
final class TransactionsViewControllerFactory {
private init() { }
func test_load_shouldRespondSomething() {
let sut = makeSUT()
// ...
// other code
XCTAssertNotNil(sut)
}
@arifinfrds
arifinfrds / makeSUTHelperMethod.swift
Created November 6, 2020 13:36
Example of makeSUT helper method
private func makeSUT() -> LoadLanguageIdPreferencesUseCase {
let analytic: Inalytic = AnalayticSpy()
let storageClient: IUserDefaults = UserDefaultsSpy()
let serviceClient: IHTTPClient = HTTPClientSpy()
let storage: TextToSpeechPreferencesStorage = TextToSpeechPreferencesStorageImpl(client: storageClient)
let service: TextToSpeechPreferencesService = TextToSpeechPreferencesServiceImpl(client: serviceClient)
let repository: TextToSpeechPreferencesRepository = TextToSpeechPreferencesRepositoryImpl(
storage: storage,
service: service
)
@arifinfrds
arifinfrds / ViewController+UITableViewDelegate(Not clean).swift
Created January 1, 2019 02:56
Simple example of not clean ethod Implementation.
import UIKit
extension ViewController: UITableViewDelegate {
// Some UITableViewDelegate methods
// ...
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let verticalOffset = tableView.contentOffset.y
if verticalOffset >= 64 {
@arifinfrds
arifinfrds / ViewController+UITableViewDelegate.swift
Created January 1, 2019 02:53
Simple Example of Clean Method Implementation.
import UIKit
extension ViewController: UITableViewDelegate {
// Some UITableViewDelegate method
// ...
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let verticalOffset = tableView.contentOffset.y
verticalOffset >= 64
@arifinfrds
arifinfrds / LoginVC.swift
Created September 10, 2018 17:18
arifinfrds/iOS-XCUITestsDemo/XCUITestsDemo/LoginVC.swift
class LoginVC: UIViewController {
// MARK: - Outlets
@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
// MARK: - View life cycle
override func viewDidLoad() {
super.viewDidLoad()
@arifinfrds
arifinfrds / ViewController.swift
Created August 1, 2018 03:28
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/view/controller/ViewController.swift
import UIKit
import SDWebImage
class ViewController: UIViewController {
// MARK: - Outlet
@IBOutlet weak var headerImageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@arifinfrds
arifinfrds / PhotoViewModel.swift
Created August 1, 2018 03:25
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/view model/PhotoViewModel.swift
import Foundation
class PhotoViewModel {
// MARK: - Properties
private var photo: Photo? {
didSet {
guard let p = photo else { return }
self.setupText(with: p)
self.didFinishFetch?()
@arifinfrds
arifinfrds / DataService.swift
Created August 1, 2018 03:22
arifinfrds/iOS-MVVM-Alamofire/MVVM Alamofire/service/
import Foundation
import Alamofire
struct DataService {
// MARK: - Singleton
static let shared = DataService()
// MARK: - URL
private var photoUrl = "https://jsonplaceholder.typicode.com/photos"