🏭 FactoryFactory 🏭
Generate boilerplate of factory Swift framework.
Requirements
FactoryFactory works on the following platforms:
- iOS 8+
- Mac OSX 10.9+
- watchOS 2+
- tvOS 9+
FactoryFactory
1. Installation
CocoaPods
FactoryFactory runtime is available through CocoaPods. To install it, simply add the following line to your test target in your Podfile:
pod "FactoryFactory"And add the following Run script build phase to your test target's Build Phases:
"${PODS_ROOT}/FactoryFactory/run" \
--include "${PROJECT_DIR}/${PROJECT_NAME}/Input1/**/*.swift" \
--include "${PROJECT_DIR}/${PROJECT_NAME}/Input2/**/*.swift" \
--exclude "${PROJECT_DIR}/${PROJECT_NAME}/Input2/InputFile.swift" \
--testable "$PROJECT_NAME" \
--output "$PROJECT_DIR/${PROJECT_NAME}Tests/Factories.generated.swift"After running once, locate Factories.generated.swift and drag it into your Xcode test target group.
--include
path of files to generate
--exclude
path of files not to generate
--testable
testable target
--output
path of generated file
2. Usage
You can get a instance to call <TypeName>.provide(). Each properties are set to default value.
struct Climber {
let name: String
let age: Int
}
let climber = Climber.provide()3. Lens
<TypeName>.provide() provides fixed instance. You can modify each property by Lens.
Get
let name = Climber._name.get(Climber.provide())
// ""Set
let climber = Climber._name.set(Climber.provide(), "Climber")
// Climber(name: "Climber", age: 0)Modify
let climber1 = Climber._name.set(Climber.provide(), "Climber")
// Climber(name: "Climber", age: 0)
let climber = Climber._name.modify(climber1, f: { $0 + $0 })
// Climber(name: "ClimberClimber", age: 0)Compose
struct Climber {
let id: Id
let name: String
struct Id {
let value: String
}
}
let climber1 = Climber.provide()
// Climber(id: Id(value: ""), name: "")
let climber2 = Climber._id.compose(other: Climber.Id._value).set(climber1, "id")
// Climber(id: Id(value: "id"), name: "")Libraries
License
FactoryFactory is available under the MIT License.