From 9309ac77660e402cb9e7d0066d58f5a8cdeef658 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sat, 19 Mar 2016 19:58:39 +0300 Subject: [PATCH] add test, bump readme --- README.md | 8 ++-- .../UserInterfaceState.xcuserstate | Bin 19011 -> 18529 bytes Tests/TabletTests.swift | 44 +++++++++++++++++- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5ab6266..5851397 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,13 @@ Tablet is a super lightweight yet powerful generic library that handles a comple ## Features -- [x] Powerfull type-safe system based on generics +- [x] Type-safe cells based on generics +- [x] The easiest way to map your models or view models to cells - [x] Chainable cell actions - [x] Support cells created from code, xib, or storyboard - [x] Automatic xib/classes registration - [x] No need to subclass +- [x] Correctly handles autolayout cells with multiline labels - [x] Extensibility - [x] Tests @@ -66,7 +68,7 @@ let rowBuilder = TableRowBuilder(items: [user1, user2, us data.cell?.detailTextLabel?.text = data.item.isActive ? "Active" : "Inactive" } -let sectionBuilder = TableSectionBuilder(headerTitle: "Users", rowBuilders: [rowBuilder]) +let sectionBuilder = TableSectionBuilder(headerTitle: "Users", rows: [rowBuilder]) director = TableDirector(tableView: tableView) director.appendSections(sectionBuilder) @@ -108,7 +110,7 @@ let rowBuilder = TableConfigurableRowBuilder() rowBuilder.appendItems(users) director = TableDirector(tableView: tableView) -tableDirector.appendSection(TableSectionBuilder(rowBuilders: [rowBuilder])) +tableDirector.appendSection(TableSectionBuilder(rows: [rowBuilder])) ``` ### Cell actions diff --git a/Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index b0f72cb51d0a8075441a3c265fac097adb784daf..1d9a3e24c33e7440457d607808e545d54d4c0346 100644 GIT binary patch delta 10414 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 dxSsJK<7vjj_#GPj0wCkn{{u0uc!K}{ delta 10715 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 String { + return TestTableViewCellOptions.ReusableIdentifier + } + + static func estimatedHeight() -> Float { + return TestTableViewCellOptions.EstimatedHeight + } + + func configureWithItem(item: Item) { + textLabel?.text = item.title + } +} + class TabletTests: XCTestCase { var testController: TestController! @@ -80,4 +108,18 @@ class TabletTests: XCTestCase { XCTAssertTrue(cell?.textLabel?.text == element) } } + + func testConfigurableRowBuilder() { + + let testData = TestData(title: "title") + + testController.view.hidden = false + testController.tableDirector += TableConfigurableRowBuilder(item: testData) + testController.tableView.reloadData() + + let cell = testController.tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)) as? TestTableViewCell + + XCTAssertNotNil(cell, "Cell should exists and should be TestTableViewCell") + XCTAssertTrue(cell?.textLabel?.text == testData.title, "Cell's textLabel.text should equal to testData's title") + } } \ No newline at end of file