Added unit tests for rx_itemAccessoryButtonTapped

Added test to validate observable produces the correct NSIndexPath when delegate method called
This commit is contained in:
Mark Woollard 2016-01-29 07:30:10 +00:00
parent 87b36ffb0d
commit 825d09a04b
1 changed files with 35 additions and 4 deletions

View File

@ -278,6 +278,7 @@ extension ControlTests {
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_itemSelected }
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_itemDeselected }
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_itemAccessoryButtonTapped }
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_modelSelected(Int.self) }
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_itemDeleted }
ensureEventDeallocated(createView) { (view: UITableView) in view.rx_itemMoved }
@ -332,6 +333,35 @@ extension ControlTests {
func testTableView_ModelSelected_rx_itemsWithCellFactory() {
let items: Observable<[Int]> = Observable.just([1, 2, 3])
let createView: () -> (UITableView, Disposable) = {
let tableView = UITableView(frame: CGRectMake(0, 0, 1, 1))
let dataSourceSubscription = items.bindTo(tableView.rx_itemsWithCellFactory) { (tv, index: Int, item: Int) -> UITableViewCell in
return UITableViewCell(style: .Default, reuseIdentifier: "Identity")
}
return (tableView, dataSourceSubscription)
}
let (tableView, dataSourceSubscription) = createView()
var selectedItem: Int? = nil
let s = tableView.rx_modelSelected(Int.self)
.subscribeNext { item in
selectedItem = item
}
tableView.delegate!.tableView!(tableView, didSelectRowAtIndexPath: NSIndexPath(forRow: 1, inSection: 0))
XCTAssertEqual(selectedItem, 2)
dataSourceSubscription.dispose()
s.dispose()
}
func testTableView_IndexPath_rx_itemAccessoryButtonTapped() {
let items: Observable<[Int]> = Observable.just([1, 2, 3])
let createView: () -> (UITableView, Disposable) = {
let tableView = UITableView(frame: CGRectMake(0, 0, 1, 1))
@ -344,16 +374,17 @@ extension ControlTests {
let (tableView, dataSourceSubscription) = createView()
var selectedItem: Int? = nil
var selectedItem: NSIndexPath? = nil
let s = tableView.rx_modelSelected(Int.self)
let s = tableView.rx_itemAccessoryButtonTapped
.subscribeNext { item in
selectedItem = item
}
tableView.delegate!.tableView!(tableView, didSelectRowAtIndexPath: NSIndexPath(forRow: 1, inSection: 0))
let testRow = NSIndexPath(forRow: 1, inSection: 0)
tableView.delegate!.tableView!(tableView, accessoryButtonTappedForRowWithIndexPath: NSIndexPath(forRow: 1, inSection: 0))
XCTAssertEqual(selectedItem, 2)
XCTAssertEqual(selectedItem, testRow)
dataSourceSubscription.dispose()
s.dispose()