Latest 0.1.0
Homepage https://github.com/Nonchalant/FactoryFactory
License MIT
Platforms ios 8.0, osx 10.9, watchos 2.0, tvos 9.0, requires ARC
Frameworks Foundation
Authors

:factory: FactoryProvider :factory:

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

Generate boilerplate of factory Swift framework.

Requirements

FactoryProvider works on the following platforms:

  • iOS 8+
  • Mac OSX 10.9+
  • watchOS 2+
  • tvOS 9+

Supports

Struct, Enum

FactoryProvider

1. Installation

CocoaPods

FactoryProvider runtime is available through CocoaPods. To install it, simply add the following line to your test target in your Podfile:

pod "FactoryProvider"

And add the following Run script build phase to your test target’s Build Phases:

"${PODS_ROOT}/FactoryProvider/generate" 
    "${PROJECT_DIR}/${PROJECT_NAME}"/Input1/**/*.swift 
    "${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

FactoryProvider is available under the MIT License.

Latest podspec

{
    "name": "FactoryFactory",
    "version": "0.1.0",
    "summary": "FactoryFactory - generate boilerplate of factory Swift framework.",
    "description": "FactoryFactory is a framework to generate boilerplate of factory with an easy to write TestCase.nIt generates factories automatically to enable this functionality.",
    "homepage": "https://github.com/Nonchalant/FactoryFactory",
    "license": "MIT",
    "authors": {
        "Takeshi Ihara": "[email protected]"
    },
    "source": {
        "git": "https://github.com/Nonchalant/FactoryFactory.git",
        "tag": "0.1.0"
    },
    "platforms": {
        "ios": "8.0",
        "osx": "10.9",
        "watchos": "2.0",
        "tvos": "9.0"
    },
    "source_files": [
        "Source/**/*.swift"
    ],
    "preserve_paths": [
        "Generator/**/*",
        "run"
    ],
    "prepare_command": "curl -Lo run https://github.com/Nonchalant/FactoryFactory/releases/download/0.1.0/runnchmod +x run",
    "frameworks": "Foundation",
    "requires_arc": true,
    "pod_target_xcconfig": {
        "ENABLE_BITCODE": "NO",
        "SWIFT_REFLECTION_METADATA_LEVEL": "none"
    }
}

Pin It on Pinterest

Share This