Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/vadymmarkov/Fakery

:alien: Swift fake data generator
https://github.com/vadymmarkov/Fakery

fake fakery lorem swift-framework unit-testing

Last synced: about 2 months ago
JSON representation

:alien: Swift fake data generator

Lists

README

        

![Fakery logo](https://raw.githubusercontent.com/vadymmarkov/Fakery/master/Images/logo.png)
[![CI Status](http://img.shields.io/travis/vadymmarkov/Fakery.svg?style=flat)](https://travis-ci.org/vadymmarkov/Fakery)
[![Carthage](https://img.shields.io/badge/carthage-compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Version](https://img.shields.io/cocoapods/v/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)
[![License](https://img.shields.io/cocoapods/l/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)
[![Platform](https://img.shields.io/cocoapods/p/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)

This is a Swift port of Ruby's [Faker](https://github.com/stympy/faker) library that generates fake data.

Are you still bothered with meaningless randomly character strings? Just relax and leave this job to **Fakery**.
It's useful in all the cases when you need to use some dummy data for testing, population of database during development, etc.

**NOTE**: Generated data is pretty realistic, supports a range of locales, but returned values are not guaranteed to be unique.

## Table of Contents

* [Usage](#usage)
* [Localization](#localization)
* [Generators](#generators)
* [Address](#address)
* [App](#app)
* [Business](#business)
* [Cat](#cat)
* [Commerce](#commerce)
* [Company](#company)
* [Zelda](#zelda)
* [Gender](#gender)
* [Internet](#internet)
* [Lorem](#lorem)
* [Name](#name)
* [Number](#number)
* [Phone number](#phone-number)
* [Team](#team)
* [Bank](#bank)
* [Car](#car)
* [Programming language](#programming-language)
* [Vehicle](#vehicle)
* [Hobbit](#hobbit)
* [Installation](#installation)
* [Contributing](#contributing)
* [Author](#author)
* [License](#license)

## Usage

```swift
import Fakery

let faker = Faker(locale: "nb-NO")

let firstName = faker.name.firstName() //=> "Emilie"
let lastName = faker.name.lastName() //=> "Hansen"
let city = faker.address.city() //=> "Oslo"
```

## Localization

**Fakery** is quite powerful when it comes to generation of locale-specific data.
In `Resources/Locales` you can find JSON files for more than 20 locales, and, of course, it's not a limit.
Feel free to contribute and add more!

The default locale is English. When you use one of the available generators and
the corresponding key is not found in a JSON file for the currently selected
locale **Fakery** will also check if it exists in "en.json" file.

## Generators

### Address

```swift

faker.address.city() //=> "Oslo"
faker.address.streetName() //=> "North Avenue"
faker.address.secondaryAddress() //=> "Apt. 123"
faker.address.streetAddress(includeSecondary: Bool) //=> "12 North Avenue"
faker.address.buildingNumber() //=> "123"
faker.address.postcode(stateAbbreviation: String) //=> "0884"
faker.address.timeZone() //=> "America/Los_Angeles"
faker.address.streetSuffix() //=> "Avenue"
faker.address.citySuffix() //=> "town"
faker.address.cityPrefix() //=> "North"
faker.address.stateAbbreviation() //=> "CA"
faker.address.state() //=> "California"
faker.address.county() //=> "Autauga County"
faker.address.country() //=> "United States of America"
faker.address.countryCode() //=> "US"
faker.address.latitude() //=> -58.17256227443719
faker.address.longitude() //=> -156.65548382095133
faker.address.coordinate() //=> CLLocationCoordinate2D(latitude: 40.97868, longitude: 29.09306)
```

### App

```swift

faker.app.name() //=> "Namfix"
faker.app.version() //=> "0.1.1"
faker.app.author() //=> "Ida Adams"
```

### Business

```swift

faker.business.creditCardNumber() //=> "1234-2121-1221-1211"
faker.business.creditCardType() //=> "visa"
faker.business.creditCardExpiryDate() //=> "2020-10-12"
```

### Cat

```swift

faker.cat.name() //=> "Shadow"
faker.cat.breed() //=> "British Semipi-longhair"
faker.cat.registry() //=> "American Cat Fanciers Association"
```

### Commerce

```swift

faker.commerce.color() //=> "black"
faker.commerce.department(maximum: Int, fixedAmount: Bool) //=> "Music"
faker.commerce.productName() //=> "Awesome Wooden Hat"
faker.commerce.price() // 90.5
```

### Company

```swift

faker.company.name() //=> "Adams Inc"
faker.company.suffix() //=> "Inc"
faker.company.catchPhrase() //=> "Universal software"
faker.company.bs() //=> "implement innovative methodologies"
faker.company.logo() // "http://pigment.github.io/fake-logos/logos/medium/color/1.png"
```

### Zelda

```swift

faker.zelda.game() //=> "Ocarina of Time"
```

### Gender

```swift

faker.gender.type() //=> "Agender"
faker.gender.binaryType() //=> "Male"
```

### Internet

```swift

faker.internet.username(separator: String?) //=> "ida4"
faker.internet.domainName(alphaNumericOnly: Bool) //=> "example.com"
faker.internet.domainWord(alphaNumericOnly: Bool) //=> "domainword"
faker.internet.domainSuffix() //=> "com"
faker.internet.email() // => "[email protected]"
faker.internet.freeEmail() //=> "gmail.com"
faker.internet.safeEmail() //=> "[email protected]"
faker.internet.password(minimumLength: Int, maximumLength: Int) //=> "e2dddhwd1g5qhvhgfi"
faker.internet.ipV4Address() //=> "24.29.18.175"
faker.internet.ipV6Address() //=> "ac5f:d696:3807:1d72:2eb5:4e81:7d2b:e1df"
faker.internet.url() //=> "http://example.com/ida4"
faker.internet.image() //=> "http://lorempixel.com/320/200"
faker.internet.templateImage() //=> "http://dummyimage.com/320x200/000000/ffffff"
faker.internet.hashtag() //=> "#art"

```

### Lorem

```swift

faker.lorem.word() //=> "repellendus"
faker.lorem.words(amount: Int) //=> ["dolores", "adipisci", "nesciunt"]
faker.lorem.character() //=> "a"
faker.lorem.characters(amount: Int) // Default = 255
faker.lorem.sentence(wordsAmount: Int) // Default = 4
faker.lorem.sentences(amount: Int) // Default = 3
faker.lorem.paragraph(sentencesAmount: Int) // Default = 3
faker.lorem.paragraphs(amount: Int) // Default = 3
```

### Name

```swift

faker.name.name() //=> "Ida Adams"
faker.name.firstName() //=> "Ida"
faker.name.lastName() //=> "Adams"
faker.name.prefix() //=> "Mrs."
faker.name.suffix() //=> "PhD"
faker.name.title() //=> "Lead"
```

### Number

```swift

faker.number.randomBool() //=> true or false
faker.number.randomInt() //=> some Int between 0 and 1000
faker.number.randomInt(min: -100, max:50) //=> some Int between -100 and 50
faker.number.randomFloat() //=> some Float between 0 and 1000
faker.number.randomFloat(min: -10.4, max:50) //=> some Float between -10.4 and 50
faker.number.randomCGFloat() //=> some CGFloat between 0 and 1000
faker.number.randomCGFloat(min: 42.42, max:86) //=> some CGFloat between -42.42 and 86
faker.number.randomDouble() //=> some Double between 0 and 1000
faker.number.randomDouble(min: 0, max:1) //=> some Double between 0 and 1
faker.number.increasingUniqueId() //=> every call returns an unique int
```

### Phone number

```swift

faker.phoneNumber.phoneNumber() //=> "1-333-333-3333"
faker.phoneNumber.cellPhone() //=> "333-333-3333"
faker.phoneNumber.areaCode() //=> "201"
faker.phoneNumber.exchangeCode() //=> "201"
faker.phoneNumber.subscriberNumber() //=> "1234"
faker.phoneNumber.numberExtension(length: Int) // "123"
```

### Team

```swift

faker.team.name() //=> "bats"
faker.team.creature() //=> "Alabama bats"
faker.team.state() // => "Alabama"
```

### Bank

```swift
faker.bank.name() //=> "ABN AMRO CORPORATE FINANCE LIMITED"
faker.bank.swiftBic() //=> "AAFMGB21"
faker.bank.iban() // => "NL45BUNQ2209931378"
faker.bank.bban() //=> ABNA0136468471
```

### Hobbit

```swift
faker.hobbit.character() //=> "Bilbo Baggins"
faker.hobbit.thorinsCompany() //=> "Thorin Oakenshield"
faker.hobbit.quote() // => "Do you wish me a good morning, or mean that it is a good morning whether I want it or not; or that you feel good this morning; or that it is a morning to be good on?"
faker.hobbit.location() //=> "Bree"
```

### Car

```swift
faker.car.brand() //=> "BMW"
```

### Programming language

```swift
faker.programming_language.name() //=> "Elixir"
faker.programming_language.creator() //=> "José Valim"
```

### Vehicle

```swift
faker.vehicle.manufacture() //=> "Volkswagen"
faker.vehicle.make() //=> "BMW"
faker.vehicle.colors() //=> "Red"
```

### Ham

```swift
faker.ham.name() //=> "Taylor Ham"
```

### House

```swift
faker.house.furniture() //=> "chair"
faker.house.room() //=> "living room"
```

## Installation

**Fakery** is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:

```ruby
pod 'Fakery'
```

Or alternatively using the Swift Package Manager:

```swift
let package = Package(
//…
dependencies[
.package(name: "Fakery", url: "https://github.com/vadymmarkov/Fakery", from: "5.0.0"))
],
targets: [
.target(name: "Foo", dependencies: ["Fakery"]
]
)
```

Use of the Swift Package Manager requires Swift >=5.3.

## Contributing

Please see our [playbook](https://github.com/hyperoslo/playbook/blob/master/GIT_AND_GITHUB.md) for guidelines on contributing.

## Author

Vadym Markov, [email protected]

## License

**Fakery** is available under the MIT license. See the LICENSE file for more info.