Skip to content

Commit a7428df

Browse files
author
Vinodh Swamy
committed
Added tests related to VSCollectionViewSectionHandler
1 parent a037f29 commit a7428df

4 files changed

Lines changed: 127 additions & 3 deletions

File tree

VSCollectionKit/VSCollectionKit.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
531DDD95243C87D50096EC9D /* VSCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8D243C87D50096EC9D /* VSCollectionViewController.swift */; };
2525
531DDD96243C87D50096EC9D /* VSCollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8E243C87D50096EC9D /* VSCollectionViewDataSource.swift */; };
2626
531DDD97243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8F243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift */; };
27+
53A1FED22449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A1FED12449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift */; };
28+
53A1FED42449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A1FED32449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift */; };
2729
/* End PBXBuildFile section */
2830

2931
/* Begin PBXContainerItemProxy section */
@@ -57,6 +59,8 @@
5759
531DDD8D243C87D50096EC9D /* VSCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VSCollectionViewController.swift; sourceTree = "<group>"; };
5860
531DDD8E243C87D50096EC9D /* VSCollectionViewDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VSCollectionViewDataSource.swift; sourceTree = "<group>"; };
5961
531DDD8F243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VSCollectionViewLayoutProvider.swift; sourceTree = "<group>"; };
62+
53A1FED12449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSCollectionViewSectionHandlerTests.swift; sourceTree = "<group>"; };
63+
53A1FED32449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSCollectionViewLayoutProviderTests.swift; sourceTree = "<group>"; };
6064
/* End PBXFileReference section */
6165

6266
/* Begin PBXFrameworksBuildPhase section */
@@ -113,6 +117,8 @@
113117
5316E28124448E7100D30576 /* VSCollectionViewDataSourceTests.swift */,
114118
5316E28324449F6E00D30576 /* VSCollectionViewDelegateTests.swift */,
115119
5316E2852444DFC900D30576 /* VSCollectionViewDataTests.swift */,
120+
53A1FED12449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift */,
121+
53A1FED32449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift */,
116122
5316E27B2444872300D30576 /* MockSectionModel.swift */,
117123
5316E27D2444874300D30576 /* MockCellModel.swift */,
118124
5316E27F24448D2F00D30576 /* MockSectionHandler.swift */,
@@ -263,11 +269,13 @@
263269
files = (
264270
5316E2862444DFC900D30576 /* VSCollectionViewDataTests.swift in Sources */,
265271
5316E28024448D2F00D30576 /* MockSectionHandler.swift in Sources */,
272+
53A1FED22449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift in Sources */,
266273
5316E27E2444874300D30576 /* MockCellModel.swift in Sources */,
267274
5316E28224448E7100D30576 /* VSCollectionViewDataSourceTests.swift in Sources */,
268275
531DDD6C243C859D0096EC9D /* VSCollectionKitTests.swift in Sources */,
269276
5316E28424449F6E00D30576 /* VSCollectionViewDelegateTests.swift in Sources */,
270277
5316E27C2444872300D30576 /* MockSectionModel.swift in Sources */,
278+
53A1FED42449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift in Sources */,
271279
);
272280
runOnlyForDeploymentPostprocessing = 0;
273281
};

VSCollectionKit/VSCollectionKitTests/MockSectionHandler.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@ class MockSectionHandler: SectionHandler {
3636
_ headerViewModel: HeaderViewModel) -> UICollectionReusableView? {
3737
let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind,
3838
withReuseIdentifier: "mockHeader",
39-
for: IndexPath(item: 11, section: 0))
39+
for: IndexPath(item: 11, section: 0)) as! MockHeaderView
4040
return view
4141
}
4242

43-
func collectionLayout(for sectionModel: SectionModel,
44-
environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? {
43+
func sectionLayoutProvider(_ sectionModel: SectionModel, _ environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? {
4544
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1),
4645
heightDimension: .fractionalHeight(1))
4746
let itemLayout = NSCollectionLayoutItem(layoutSize: itemSize)
@@ -61,3 +60,15 @@ class MockCollectionViewCell: UICollectionViewCell {
6160
class MockHeaderView: UICollectionReusableView {
6261

6362
}
63+
64+
class MockLayoutEnvironment: NSObject, NSCollectionLayoutEnvironment {
65+
var container: NSCollectionLayoutContainer = MockLayoutContainer()
66+
var traitCollection: UITraitCollection = .current
67+
68+
class MockLayoutContainer: NSObject, NSCollectionLayoutContainer {
69+
var contentSize: CGSize = .zero
70+
var effectiveContentSize: CGSize = .zero
71+
var contentInsets: NSDirectionalEdgeInsets = .zero
72+
var effectiveContentInsets: NSDirectionalEdgeInsets = .zero
73+
}
74+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//
2+
// VSCollectionViewLayoutProviderTests.swift
3+
// VSCollectionKitTests
4+
//
5+
// Created by Vinodh Govindaswamy on 17/04/20.
6+
// Copyright © 2020 Vinodh Govindaswamy. All rights reserved.
7+
//
8+
9+
import XCTest
10+
import UIKit
11+
@testable import VSCollectionKit
12+
13+
class VSCollectionViewLayoutProviderTests: XCTestCase {
14+
15+
var collectionView: UICollectionView!
16+
17+
override func setUp() {
18+
let collectionViewLayout = UICollectionViewCompositionalLayout { (section, enivronment) -> NSCollectionLayoutSection? in
19+
return self.mockSectionHandler.collectionLayout(for: MockSectionModel(sectionType: "MockSection",
20+
sectionName: "Mock Seciton Name"),
21+
environment: MockLayoutEnvironment())
22+
}
23+
24+
collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
25+
}
26+
27+
override func tearDown() {
28+
// Put teardown code here. This method is called after the invocation of each test method in the class.
29+
}
30+
31+
func testExample() {
32+
let layoutProvider = VSCollectionViewLayoutProvider(collectionView: collectionView,
33+
sectionHandler: mockSectionHandler)
34+
XCTAssertNotNil(layoutProvider.collectionLayout(for: MockSectionModel(sectionType: "MockSection", sectionName: "Mock Section Name"),
35+
environment: MockLayoutEnvironment()))
36+
}
37+
38+
var mockSectionHandler: VSCollectionViewSectionHandller {
39+
let sectionHand = VSCollectionViewSectionHandller()
40+
sectionHand.addSectionHandler(handler: MockSectionHandler())
41+
return sectionHand
42+
}
43+
44+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
//
2+
// VSCollectionViewSectionHandlerTests.swift
3+
// VSCollectionKitTests
4+
//
5+
// Created by Vinodh Govindaswamy on 17/04/20.
6+
// Copyright © 2020 Vinodh Govindaswamy. All rights reserved.
7+
//
8+
9+
import XCTest
10+
import UIKit
11+
@testable import VSCollectionKit
12+
13+
class VSCollectionViewSectionHandlerTests: XCTestCase {
14+
15+
var collectionView: UICollectionView!
16+
let mockSectionHandler = MockSectionHandler()
17+
override func setUp() {
18+
let collectionViewLayout = UICollectionViewCompositionalLayout { (section, enivronment) -> NSCollectionLayoutSection? in
19+
return self.mockSectionHandler.sectionLayoutProvider(MockSectionModel(sectionType: "MockSection",
20+
sectionName: "Mock Seciton Name"), MockLayoutEnvironment())
21+
}
22+
23+
collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
24+
}
25+
26+
override func tearDown() {
27+
// Put teardown code here. This method is called after the invocation of each test method in the class.
28+
}
29+
30+
func testNumberRows() {
31+
let sectionHandler = vsSectionHandler()
32+
XCTAssertEqual(sectionHandler.numOfRows(for: MockSectionModel(sectionType: "MockSection",
33+
sectionName: "Mock Seciton Name"), sectionIndex: 0), 20)
34+
}
35+
36+
func testCellType() {
37+
let sectionHandler = vsSectionHandler()
38+
let cell = sectionHandler.cell(for: collectionView,
39+
indexPath: IndexPath(item: 0,
40+
section: 0),
41+
sectionModel: MockSectionModel(sectionType: "MockSection",
42+
sectionName: "Mock Seciton Name"))
43+
XCTAssertNotNil(cell)
44+
XCTAssert(cell.isKind(of: MockCollectionViewCell.self))
45+
}
46+
47+
func testSectionLayoutInfo() {
48+
let sectionHandler = vsSectionHandler()
49+
let layoutInfo = sectionHandler.collectionLayout(for: MockSectionModel(sectionType: "MockSection",
50+
sectionName: "Mock Seciton Name"),
51+
environment: MockLayoutEnvironment())
52+
XCTAssertNotNil(layoutInfo)
53+
}
54+
55+
func vsSectionHandler() -> VSCollectionViewSectionHandller {
56+
let sectionHandler = VSCollectionViewSectionHandller()
57+
sectionHandler.addSectionHandler(handler: mockSectionHandler)
58+
sectionHandler.registerCells(for: collectionView)
59+
return sectionHandler
60+
}
61+
}

0 commit comments

Comments
 (0)