Skip to content

Commit

Permalink
Merge pull request Skyscanner#271 from rethink-eder/customizations
Browse files Browse the repository at this point in the history
Customize errorMessage position
  • Loading branch information
k0nserv authored Jan 7, 2020
2 parents 82c0bbb + 73ef34b commit dd82b26
Show file tree
Hide file tree
Showing 6 changed files with 512 additions and 194 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
language: objective-c
xcode_project: SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcodeproj
xcode_scheme: SkyFloatingLabelTextField
before_install:
- gem install bundler
script:
- bundle exec rake ci
matrix:
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ let package = Package(
name: "SkyFloatingLabelTextFieldTests",
dependencies: ["SkyFloatingLabelTextField"],
path: "SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests"
),
)
],
swiftLanguageVersions: [.v4_2]
)

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,15 @@ class SettingTextsViewController: UIViewController {
textField.isEnabled = !textField.isEnabled
}
}

@IBAction func errorPlacementChanged(_ segmentedControl: UISegmentedControl) {
switch segmentedControl.selectedSegmentIndex {
case 0:
textField?.errorMessagePlacement = .bottom
case 1:
textField?.errorMessagePlacement = .default
default:
break
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,19 @@ class SkyFloatingLabelTextFieldTests: XCTestCase { // swiftlint:disable:this typ
XCTAssertEqual(floatingLabelTextField.lineView.backgroundColor, self.customColor)
}

func test_whenSettingErrorColor_withErrorMessagePlacementIsBottom_thenErrorLabelTextColorIsChangedToThisColor() {
// given
floatingLabelTextField.errorMessagePlacement = .bottom
floatingLabelTextField.errorMessage = "test"

// when
floatingLabelTextField.errorColor = self.customColor

// then
XCTAssertNotEqual(floatingLabelTextField.titleLabel.textColor, self.customColor)
XCTAssertEqual(floatingLabelTextField.errorLabel.textColor, self.customColor)
}

func test_whenSettingSelectedTitleColor_withTextfieldBeingSelected_thenTitleLabelTextColorIsChangedToThisColor() {
// given
floatingLabelTextField.isSelected = true
Expand Down Expand Up @@ -915,6 +928,42 @@ class SkyFloatingLabelTextFieldTests: XCTestCase { // swiftlint:disable:this typ
XCTAssertEqual(size.height, floatingLabelTextField.titleHeight() + floatingLabelTextField.textHeight())
}

// MARK: Error Message Placement
func test_whenSettingErrorMessage_whenErrorMessagePlacementSetToDefault_thenTitleLabelTextIsChanged() {
// given
XCTAssertEqual(floatingLabelTextField.errorMessagePlacement, .default)

// when
floatingLabelTextField.errorMessage = "SAMPLE ERROR"

// then
XCTAssertEqual(floatingLabelTextField.titleLabel.text, "SAMPLE ERROR")
}

func test_whenSettingErrorMessage_whenErrorMessagePlacementSetToBottom_thenErrorLabelTextIsChanged() {
// given
floatingLabelTextField.title = "SAMPLE TITLE"
floatingLabelTextField.errorMessagePlacement = .bottom

// when
floatingLabelTextField.errorMessage = "SAMPLE ERROR"

// then
XCTAssertEqual(floatingLabelTextField.titleLabel.text, "SAMPLE TITLE")
XCTAssertEqual(floatingLabelTextField.errorLabel.text, "SAMPLE ERROR")
}

func test_whenErrorLabelAlignment_thenErrorLabelTextAlignemntIsChanged() {
// given
XCTAssertNotEqual(floatingLabelTextField.errorLabel.textAlignment, .center)

// when
floatingLabelTextField.errorLabelAlignment = .center

// then
XCTAssertEqual(floatingLabelTextField.errorLabel.textAlignment, .center)
}

// MARK: - Helpers

func failOnTimeoutAfterSeconds(_ timeout: TimeInterval) {
Expand Down
Loading

0 comments on commit dd82b26

Please sign in to comment.