CocoaPods trunk is moving to be read-only. Read more on the blog, there are 11 months to go.

FactoryFactory 0.1.0

FactoryFactory 0.1.0

Maintained by Takeshi Ihara.



  • By
  • Takeshi Ihara

🏭 FactoryFactory 🏭

Build Status Version Platform GitHub license GitHub release Xcode Swift Swift Package Manager

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.