Skip to content

Commit 04092ac

Browse files
committed
Add /// sourcery: CreateMock annotations to RIBs protocols in the Xcode template files.
Summary: This tutorial shows how to use automatic code generation (based on Sourcery project and custom code-generation templates) to generate protocol mock classes in a protocol-based Swift program. The code-generation tool uses type annotations (i.e., `/// sourcery: `) for a varietuy of tasks. Add `/// sourcery: CreateMock` annotations to RIBs protocols in the Xcode template files, so that template-generated RIBs are ready for code-generation.
1 parent b8cb10b commit 04092ac

File tree

7 files changed

+18
-2
lines changed

7 files changed

+18
-2
lines changed

scripts/xcode_templates/RIB.xctemplate/Default/___FILEBASENAME___Builder.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import RIBs
44

5+
/// sourcery: CreateMock
56
protocol ___VARIABLE_productName___Dependency: Dependency {
67
// TODO: Make sure to convert the variable into lower-camelcase.
78
var ___VARIABLE_productName___ViewController: ___VARIABLE_productName___ViewControllable { get }
@@ -21,6 +22,7 @@ final class ___VARIABLE_productName___Component: Component<___VARIABLE_productNa
2122

2223
// MARK: - Builder
2324

25+
/// sourcery: CreateMock
2426
protocol ___VARIABLE_productName___Buildable: Buildable {
2527
func build(withListener listener: ___VARIABLE_productName___Listener) -> ___VARIABLE_productName___Routing
2628
}
@@ -32,7 +34,8 @@ final class ___VARIABLE_productName___Builder: Builder<___VARIABLE_productName__
3234
}
3335

3436
func build(withListener listener: ___VARIABLE_productName___Listener) -> ___VARIABLE_productName___Routing {
35-
let component = ___VARIABLE_productName___Component(dependency: dependency)
37+
// TODO: Uncomment when ready.
38+
//let component = ___VARIABLE_productName___Component(dependency: dependency)
3639
let interactor = ___VARIABLE_productName___Interactor()
3740
interactor.listener = listener
3841
return ___VARIABLE_productName___Router(interactor: interactor, viewController: component.___VARIABLE_productName___ViewController)

scripts/xcode_templates/RIB.xctemplate/Default/___FILEBASENAME___Interactor.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import RIBs
44
import RxSwift
55

6+
/// sourcery: CreateMock
67
protocol ___VARIABLE_productName___Routing: Routing {
78
func cleanupViews()
89
// TODO: Declare methods the interactor can invoke to manage sub-tree via the router.
910
}
1011

12+
/// sourcery: CreateMock
1113
protocol ___VARIABLE_productName___Listener: class {
1214
// TODO: Declare methods the interactor can invoke to communicate with other RIBs.
1315
}

scripts/xcode_templates/RIB.xctemplate/Default/___FILEBASENAME___Router.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import RIBs
44

5+
/// sourcery: CreateMock
56
protocol ___VARIABLE_productName___Interactable: Interactable {
67
var router: ___VARIABLE_productName___Routing? { get set }
78
var listener: ___VARIABLE_productName___Listener? { get set }
89
}
910

11+
/// sourcery: CreateMock
1012
protocol ___VARIABLE_productName___ViewControllable: ViewControllable {
1113
// TODO: Declare methods the router invokes to manipulate the view hierarchy. Since
1214
// this RIB does not own its own view, this protocol is conformed to by one of this

scripts/xcode_templates/RIB.xctemplate/ownsView/___FILEBASENAME___Builder.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import RIBs
44

5+
/// sourcery: CreateMock
56
protocol ___VARIABLE_productName___Dependency: Dependency {
67
// TODO: Declare the set of dependencies required by this RIB, but cannot be
78
// created by this RIB.
@@ -14,6 +15,7 @@ final class ___VARIABLE_productName___Component: Component<___VARIABLE_productNa
1415

1516
// MARK: - Builder
1617

18+
/// sourcery: CreateMock
1719
protocol ___VARIABLE_productName___Buildable: Buildable {
1820
func build(withListener listener: ___VARIABLE_productName___Listener) -> ___VARIABLE_productName___Routing
1921
}
@@ -25,7 +27,8 @@ final class ___VARIABLE_productName___Builder: Builder<___VARIABLE_productName__
2527
}
2628

2729
func build(withListener listener: ___VARIABLE_productName___Listener) -> ___VARIABLE_productName___Routing {
28-
let component = ___VARIABLE_productName___Component(dependency: dependency)
30+
// TODO: Uncomment when ready.
31+
//let component = ___VARIABLE_productName___Component(dependency: dependency)
2932
let viewController = ___VARIABLE_productName___ViewController()
3033
let interactor = ___VARIABLE_productName___Interactor(presenter: viewController)
3134
interactor.listener = listener

scripts/xcode_templates/RIB.xctemplate/ownsView/___FILEBASENAME___Interactor.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33
import RIBs
44
import RxSwift
55

6+
/// sourcery: CreateMock
67
protocol ___VARIABLE_productName___Routing: ViewableRouting {
78
// TODO: Declare methods the interactor can invoke to manage sub-tree via the router.
89
}
910

11+
/// sourcery: CreateMock
1012
protocol ___VARIABLE_productName___Presentable: Presentable {
1113
var listener: ___VARIABLE_productName___PresentableListener? { get set }
1214
// TODO: Declare methods the interactor can invoke the presenter to present data.
1315
}
1416

17+
/// sourcery: CreateMock
1518
protocol ___VARIABLE_productName___Listener: class {
1619
// TODO: Declare methods the interactor can invoke to communicate with other RIBs.
1720
}

scripts/xcode_templates/RIB.xctemplate/ownsView/___FILEBASENAME___Router.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import RIBs
44

5+
/// sourcery: CreateMock
56
protocol ___VARIABLE_productName___Interactable: Interactable {
67
var router: ___VARIABLE_productName___Routing? { get set }
78
var listener: ___VARIABLE_productName___Listener? { get set }
89
}
910

11+
/// sourcery: CreateMock
1012
protocol ___VARIABLE_productName___ViewControllable: ViewControllable {
1113
// TODO: Declare methods the router invokes to manipulate the view hierarchy.
1214
}

scripts/xcode_templates/RIB.xctemplate/ownsView/___FILEBASENAME___ViewController.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import RIBs
44
import RxSwift
55
import UIKit
66

7+
/// sourcery: CreateMock
78
protocol ___VARIABLE_productName___PresentableListener: class {
89
// TODO: Declare properties and methods that the view controller can invoke to perform
910
// business logic, such as signIn(). This protocol is implemented by the corresponding

0 commit comments

Comments
 (0)