Skip to content

Commit d634687

Browse files
committed
Add tests for model at index path
1 parent 64773ed commit d634687

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Tests/RxCocoaTests/UIPickerView+RxTests.swift

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,68 @@ final class UIPickerViewTests: RxTest {
202202

203203
XCTAssertEqual(selectedItem, 1)
204204
}
205+
206+
func test_modelAtIdexPath_ThrowsError_itemTitles() {
207+
let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
208+
209+
_ = Observable<[Int]>.never().bind(to: pickerView.rx.itemTitles) { _ in
210+
return ""
211+
}
212+
213+
do {
214+
let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))
215+
XCTFail()
216+
} catch let error as RxCocoaError {
217+
XCTAssertTrue(error.isItemsNotYetBound)
218+
} catch {
219+
XCTFail()
220+
}
221+
}
222+
223+
func test_modelAtIdexPath_ThrowsError_itemAttributedTitles() {
224+
let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
225+
226+
_ = Observable<[Int]>.never().bind(to: pickerView.rx.itemAttributedTitles) { _ in
227+
return NSAttributedString()
228+
}
229+
230+
do {
231+
let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))
232+
XCTFail()
233+
} catch let error as RxCocoaError {
234+
XCTAssertTrue(error.isItemsNotYetBound)
235+
} catch {
236+
XCTFail()
237+
}
238+
}
239+
240+
func test_modelAtIdexPath_ThrowsError_items() {
241+
let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
242+
243+
_ = Observable<[Int]>.never().bind(to: pickerView.rx.items) { _ in
244+
return UIView()
245+
}
246+
247+
do {
248+
let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))
249+
XCTFail()
250+
} catch let error as RxCocoaError {
251+
XCTAssertTrue(error.isItemsNotYetBound)
252+
} catch {
253+
XCTFail()
254+
}
255+
}
256+
}
205257

258+
private extension RxCocoaError {
259+
var isItemsNotYetBound: Bool {
260+
switch self {
261+
case .itemsNotYetBound(object: _):
262+
return true
263+
default:
264+
return false
265+
}
266+
}
206267
}
207268

208269
final class StubPickerViewAdapter: TestPickerViewAdapter {

0 commit comments

Comments
 (0)