@@ -48,6 +48,39 @@ final class TestCollectionViewDriverReconfigure: UnitTestCase {
48
48
49
49
self . keepDriverAlive ( driver)
50
50
}
51
+
52
+ @MainActor
53
+ func test_reconfigure_header_footer( ) {
54
+ let viewController = FakeCollectionViewController ( )
55
+ viewController. collectionView. setCollectionViewLayout (
56
+ UICollectionViewCompositionalLayout . fakeLayout ( addSupplementaryViews: false ) ,
57
+ animated: false
58
+ )
59
+
60
+ let driver = CollectionViewDriver ( view: viewController. collectionView, options: . test( ) )
61
+
62
+ // Initial header and footer
63
+ let header = FakeHeaderViewModel ( expectationConfigureView: self . expectation ( name: " initial_header " ) )
64
+ let footer = FakeFooterViewModel ( expectationConfigureView: self . expectation ( name: " initial_footer " ) )
65
+ let cells = [ FakeNumberCellViewModel ( ) ]
66
+ let section = SectionViewModel ( id: " id " , cells: cells, header: header, footer: footer)
67
+ let model = CollectionViewModel ( id: " id " , sections: [ section] )
68
+
69
+ driver. update ( viewModel: model)
70
+ self . simulateAppearance ( viewController: viewController)
71
+ self . waitForExpectations ( )
72
+
73
+ // Update header and footer to be reconfigured
74
+ let updatedHeader = FakeHeaderViewModel ( expectationConfigureView: self . expectation ( name: " updated_header " ) )
75
+ let updatedFooter = FakeFooterViewModel ( expectationConfigureView: self . expectation ( name: " updated_footer " ) )
76
+ let updatedSection = SectionViewModel ( id: " id " , cells: cells, header: updatedHeader, footer: updatedFooter)
77
+ let updatedModel = CollectionViewModel ( id: " id " , sections: [ updatedSection] )
78
+
79
+ driver. update ( viewModel: updatedModel)
80
+ self . waitForExpectations ( )
81
+
82
+ self . keepDriverAlive ( driver)
83
+ }
51
84
}
52
85
53
86
private struct MyStaticCellViewModel : CellViewModel {
0 commit comments