(※ 실제 코드 유출 방지를 위해 약간의 코드 변형을 하였습니다.)
func testConfigureIntroButton() {
let config1 = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: true, MMButtonFocused: true)
viewModel.configureMMInfo(config1)
var startButton = JoinLoginButton(type: .start, focused: false)
var MMQRButton = JoinLoginButton(type: .MMQR, focused: true)
let exp1: [JoinLoginButton] = [startButton, MMQRButton]
XCTAssertEqual(viewModel.introButtonList, exp1)
let config2 = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: true, MMButtonFocused: false)
viewModel.configureMMInfo(config2)
startButton = JoinLoginButton(type: .start, focused: true)
MMQRButton = JoinLoginButton(type: .MMQR, focused: false)
let exp2: [JoinLoginButton] = [startButton, MMQRButton]
XCTAssertEqual(viewModel.introButtonList, exp2)
let config3 = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: false, MMButtonFocused: false)
viewModel.configureMMInfo(config3)
startButton = JoinLoginButton(type: .start, focused: true)
let exp3: [JoinLoginButton] = [startButton]
XCTAssertEqual(viewModel.introButtonList, exp3)
}
func testSetButtonMMEnabledAndFocused() {
let config = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: true, MMButtonFocused: true)
viewModel.configureMMInfo(config)
let startButton = JoinLoginButton(type: .start, focused: false)
let MMQRButton = JoinLoginButton(type: .MMQR, focused: true)
let exp: [JoinLoginButton] = [startButton, MMQRButton]
XCTAssertEqual(viewModel.introButtonList, exp)
}
func testSetButtonMMEnabledAndNotFocused() {
let config = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: true, MMButtonFocused: false)
viewModel.configureMMInfo(config)
let startButton = JoinLoginButton(type: .start, focused: true)
let MMQRButton = JoinLoginButton(type: .MMQR, focused: false)
let exp: [JoinLoginButton] = [startButton, MMQRButton]
XCTAssertEqual(viewModel.introButtonList, exp)
}
func testSetButtonMMNotEnabled() {
let config = ServerConfig.MMConfig(imageUrl: "imageUrl", warningMessage: "유의사항", MMEnabled: false, MMButtonFocused: false)
viewModel.configureMMInfo(config)
let startButton = JoinLoginButton(type: .start, focused: true)
let exp: [JoinLoginButton] = [startButton]
XCTAssertEqual(viewModel.introButtonList, exp)
}
초반에 테스트 코드를 작성해야 하는 규칙을 몰랐을 때에는 하나의 테스트 함수에 모든 것을 담으려 했다. 최대한 테스트 케이스를 분리하여 작성하도록 명심해야겠다.