Add tests for newly added methods and update the implementation of the CollectionViewDiffableDataSource with canMove/moveItemAt methods
This commit is contained in:
@@ -132,6 +132,29 @@ open class CollectionViewDiffableDataSource<SectionIdentifierType: Hashable, Ite
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
/// Returns whether it is possible to edit a row at given index path.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - collectionView: A collection view instance managed by `self`.
|
||||
/// - section: An index of section.
|
||||
///
|
||||
/// - Returns: A boolean for row at specified index path.
|
||||
open func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool {
|
||||
return false
|
||||
}
|
||||
|
||||
/// Moves a row at given index path.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - collectionView: A collection view instance managed by `self`.
|
||||
/// - sourceIndexPath: An index path for given cell position.
|
||||
/// - destinationIndexPath: An index path for target cell position.
|
||||
///
|
||||
/// - Returns: Void.
|
||||
public func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
|
||||
// Empty implementation.
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -167,6 +167,24 @@ final class CollectionViewDiffableDataSourceTests: XCTestCase {
|
||||
cell
|
||||
)
|
||||
}
|
||||
|
||||
func testCanMoveRowAt() {
|
||||
let collectionView = MockCollectionView()
|
||||
let cell = UICollectionViewCell()
|
||||
let dataSource = CollectionViewDiffableDataSource<Int, Int>(collectionView: collectionView) { _, _, _ in
|
||||
cell
|
||||
}
|
||||
|
||||
var snapshot = DiffableDataSourceSnapshot<Int, Int>()
|
||||
snapshot.appendSections([0, 1, 2])
|
||||
snapshot.appendItems([0, 1, 2], toSection: 0)
|
||||
dataSource.apply(snapshot)
|
||||
|
||||
XCTAssertEqual(
|
||||
dataSource.collectionView(collectionView, canMoveItemAt: IndexPath(item: 1, section: 0)),
|
||||
false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
final class MockCollectionView: UICollectionView {
|
||||
|
||||
@@ -167,6 +167,42 @@ final class TableViewDiffableDataSourceTests: XCTestCase {
|
||||
cell
|
||||
)
|
||||
}
|
||||
|
||||
func testCanEditRowAt() {
|
||||
let tableView = MockTableView()
|
||||
let cell = UITableViewCell()
|
||||
let dataSource = TableViewDiffableDataSource<Int, Int>(tableView: tableView) { _, _, _ in
|
||||
cell
|
||||
}
|
||||
|
||||
var snapshot = DiffableDataSourceSnapshot<Int, Int>()
|
||||
snapshot.appendSections([0, 1, 2])
|
||||
snapshot.appendItems([0, 1, 2], toSection: 0)
|
||||
dataSource.apply(snapshot)
|
||||
|
||||
XCTAssertEqual(
|
||||
dataSource.tableView(tableView, canEditRowAt: IndexPath(item: 1, section: 0)),
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
func testCanMoveRowAt() {
|
||||
let tableView = MockTableView()
|
||||
let cell = UITableViewCell()
|
||||
let dataSource = TableViewDiffableDataSource<Int, Int>(tableView: tableView) { _, _, _ in
|
||||
cell
|
||||
}
|
||||
|
||||
var snapshot = DiffableDataSourceSnapshot<Int, Int>()
|
||||
snapshot.appendSections([0, 1, 2])
|
||||
snapshot.appendItems([0, 1, 2], toSection: 0)
|
||||
dataSource.apply(snapshot)
|
||||
|
||||
XCTAssertEqual(
|
||||
dataSource.tableView(tableView, canMoveRowAt: IndexPath(item: 1, section: 0)),
|
||||
false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
final class MockTableView: UITableView {
|
||||
|
||||
Reference in New Issue
Block a user