{"id":15038871,"url":"https://github.com/vadymmarkov/fakery","last_synced_at":"2025-05-15T01:06:56.379Z","repository":{"id":29579689,"uuid":"33119401","full_name":"vadymmarkov/Fakery","owner":"vadymmarkov","description":":alien: Swift fake data generator","archived":false,"fork":false,"pushed_at":"2023-04-24T11:19:13.000Z","size":1290,"stargazers_count":1817,"open_issues_count":17,"forks_count":183,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-15T01:06:50.535Z","etag":null,"topics":["fake","fakery","lorem","swift-framework","unit-testing"],"latest_commit_sha":null,"homepage":"https://vadymmarkov.github.io","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vadymmarkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-03-30T11:31:58.000Z","updated_at":"2025-04-28T04:10:46.000Z","dependencies_parsed_at":"2024-01-29T17:08:26.141Z","dependency_job_id":null,"html_url":"https://github.com/vadymmarkov/Fakery","commit_stats":{"total_commits":351,"total_committers":55,"mean_commits":6.381818181818182,"dds":0.6552706552706553,"last_synced_commit":"f68f2ceaaf6782db234e4cbcd5f06dbeeb91af7e"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadymmarkov%2FFakery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadymmarkov%2FFakery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadymmarkov%2FFakery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadymmarkov%2FFakery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vadymmarkov","download_url":"https://codeload.github.com/vadymmarkov/Fakery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254041,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fake","fakery","lorem","swift-framework","unit-testing"],"created_at":"2024-09-24T20:40:35.866Z","updated_at":"2025-05-15T01:06:51.358Z","avatar_url":"https://github.com/vadymmarkov.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Fakery logo](https://raw.githubusercontent.com/vadymmarkov/Fakery/master/Images/logo.png)\n[![CI Status](http://img.shields.io/travis/vadymmarkov/Fakery.svg?style=flat)](https://travis-ci.org/vadymmarkov/Fakery)\n[![Carthage](https://img.shields.io/badge/carthage-compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![Version](https://img.shields.io/cocoapods/v/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)\n[![License](https://img.shields.io/cocoapods/l/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)\n[![Platform](https://img.shields.io/cocoapods/p/Fakery.svg?style=flat)](http://cocoadocs.org/docsets/Fakery)\n\nThis is a Swift port of Ruby's [Faker](https://github.com/stympy/faker) library that generates fake data.\n\nAre you still bothered with meaningless randomly character strings? Just relax and leave this job to **Fakery**.\nIt's useful in all the cases when you need to use some dummy data for testing, population of database during development, etc.\n\n**NOTE**: Generated data is pretty realistic, supports a range of locales, but returned values are not guaranteed to be unique.\n\n## Table of Contents\n\n* [Usage](#usage)\n* [Localization](#localization)\n* [Generators](#generators)\n  * [Address](#address)\n  * [App](#app)\n  * [Business](#business)\n  * [Cat](#cat)\n  * [Commerce](#commerce)\n  * [Company](#company)\n  * [Zelda](#zelda)\n  * [Gender](#gender)\n  * [Internet](#internet)\n  * [Lorem](#lorem)\n  * [Name](#name)\n  * [Number](#number)\n  * [Phone number](#phone-number)\n  * [Team](#team)\n  * [Bank](#bank)\n  * [Car](#car)\n  * [Programming language](#programming-language)\n  * [Vehicle](#vehicle)\n  * [Hobbit](#hobbit)\n* [Installation](#installation)\n* [Contributing](#contributing)\n* [Author](#author)\n* [License](#license)\n\n## Usage\n\n```swift\nimport Fakery\n\nlet faker = Faker(locale: \"nb-NO\")\n\nlet firstName = faker.name.firstName()  //=\u003e \"Emilie\"\nlet lastName = faker.name.lastName()    //=\u003e \"Hansen\"\nlet city = faker.address.city()         //=\u003e \"Oslo\"\n```\n\n## Localization\n\n**Fakery** is quite powerful when it comes to generation of locale-specific data.\nIn `Resources/Locales` you can find JSON files for more than 20 locales, and, of course, it's not a limit.\nFeel free to contribute and add more!  \n\nThe default locale is English. When you use one of the available generators and\nthe corresponding key is not found in a JSON file for the currently selected\nlocale **Fakery** will also check if it exists in \"en.json\" file.\n\n## Generators\n\n### Address\n\n```swift\n\nfaker.address.city() //=\u003e \"Oslo\"\nfaker.address.streetName() //=\u003e \"North Avenue\"\nfaker.address.secondaryAddress() //=\u003e \"Apt. 123\"\nfaker.address.streetAddress(includeSecondary: Bool) //=\u003e \"12 North Avenue\"\nfaker.address.buildingNumber() //=\u003e \"123\"\nfaker.address.postcode(stateAbbreviation: String) //=\u003e \"0884\"\nfaker.address.timeZone() //=\u003e \"America/Los_Angeles\"\nfaker.address.streetSuffix() //=\u003e \"Avenue\"\nfaker.address.citySuffix() //=\u003e \"town\"\nfaker.address.cityPrefix() //=\u003e \"North\"\nfaker.address.stateAbbreviation() //=\u003e \"CA\"\nfaker.address.state() //=\u003e \"California\"\nfaker.address.county() //=\u003e \"Autauga County\"\nfaker.address.country() //=\u003e \"United States of America\"\nfaker.address.countryCode() //=\u003e \"US\"\nfaker.address.latitude() //=\u003e -58.17256227443719\nfaker.address.longitude() //=\u003e -156.65548382095133\nfaker.address.coordinate() //=\u003e CLLocationCoordinate2D(latitude: 40.97868, longitude: 29.09306)\n```\n\n### App\n\n```swift\n\nfaker.app.name() //=\u003e \"Namfix\"\nfaker.app.version() //=\u003e \"0.1.1\"\nfaker.app.author() //=\u003e \"Ida Adams\"\n```\n\n### Business\n\n```swift\n\nfaker.business.creditCardNumber() //=\u003e \"1234-2121-1221-1211\"\nfaker.business.creditCardType() //=\u003e \"visa\"\nfaker.business.creditCardExpiryDate() //=\u003e \"2020-10-12\"\n```\n\n### Cat\n\n```swift\n\nfaker.cat.name() //=\u003e \"Shadow\"        \nfaker.cat.breed() //=\u003e \"British Semipi-longhair\"\nfaker.cat.registry() //=\u003e \"American Cat Fanciers Association\"\n```\n\n### Commerce\n\n```swift\n\nfaker.commerce.color() //=\u003e \"black\"\nfaker.commerce.department(maximum: Int, fixedAmount: Bool) //=\u003e \"Music\"\nfaker.commerce.productName() //=\u003e \"Awesome Wooden Hat\"\nfaker.commerce.price() // 90.5\n```\n\n### Company\n\n```swift\n\nfaker.company.name() //=\u003e \"Adams Inc\"       \nfaker.company.suffix() //=\u003e \"Inc\"\nfaker.company.catchPhrase() //=\u003e \"Universal software\"        \nfaker.company.bs() //=\u003e \"implement innovative methodologies\"\nfaker.company.logo() // \"http://pigment.github.io/fake-logos/logos/medium/color/1.png\"\n```\n\n### Zelda\n\n```swift\n\nfaker.zelda.game() //=\u003e \"Ocarina of Time\"   \n```\n\n### Gender\n\n```swift\n\nfaker.gender.type() //=\u003e \"Agender\"\nfaker.gender.binaryType() //=\u003e \"Male\"\n```\n\n### Internet\n\n```swift\n\nfaker.internet.username(separator: String?) //=\u003e \"ida4\"       \nfaker.internet.domainName(alphaNumericOnly: Bool) //=\u003e \"example.com\"        \nfaker.internet.domainWord(alphaNumericOnly: Bool) //=\u003e \"domainword\"        \nfaker.internet.domainSuffix() //=\u003e \"com\"\nfaker.internet.email() // =\u003e \"ida4@some.info\"\nfaker.internet.freeEmail() //=\u003e \"gmail.com\"\nfaker.internet.safeEmail() //=\u003e \"adams@example.org\"\nfaker.internet.password(minimumLength: Int, maximumLength: Int) //=\u003e \"e2dddhwd1g5qhvhgfi\"\nfaker.internet.ipV4Address() //=\u003e \"24.29.18.175\"\nfaker.internet.ipV6Address() //=\u003e \"ac5f:d696:3807:1d72:2eb5:4e81:7d2b:e1df\"\nfaker.internet.url() //=\u003e \"http://example.com/ida4\"\nfaker.internet.image() //=\u003e \"http://lorempixel.com/320/200\"\nfaker.internet.templateImage() //=\u003e \"http://dummyimage.com/320x200/000000/ffffff\"\nfaker.internet.hashtag() //=\u003e \"#art\"\n\n```\n\n### Lorem\n\n```swift\n\nfaker.lorem.word() //=\u003e \"repellendus\"         \nfaker.lorem.words(amount: Int) //=\u003e [\"dolores\", \"adipisci\", \"nesciunt\"]      \nfaker.lorem.character() //=\u003e \"a\"        \nfaker.lorem.characters(amount: Int) // Default = 255\nfaker.lorem.sentence(wordsAmount: Int) // Default = 4\nfaker.lorem.sentences(amount: Int) // Default = 3\nfaker.lorem.paragraph(sentencesAmount: Int) // Default = 3\nfaker.lorem.paragraphs(amount: Int) // Default = 3\n```\n\n### Name\n\n```swift\n\nfaker.name.name() //=\u003e \"Ida Adams\"        \nfaker.name.firstName() //=\u003e \"Ida\"\nfaker.name.lastName() //=\u003e \"Adams\"\nfaker.name.prefix() //=\u003e \"Mrs.\"\nfaker.name.suffix() //=\u003e \"PhD\"\nfaker.name.title() //=\u003e \"Lead\"\n```\n\n### Number\n\n```swift\n\nfaker.number.randomBool() //=\u003e true or false\nfaker.number.randomInt() //=\u003e some Int between 0 and 1000\nfaker.number.randomInt(min: -100, max:50) //=\u003e some Int between -100 and 50\nfaker.number.randomFloat() //=\u003e some Float between 0 and 1000\nfaker.number.randomFloat(min: -10.4, max:50) //=\u003e some Float between -10.4 and 50\nfaker.number.randomCGFloat() //=\u003e some CGFloat between 0 and 1000\nfaker.number.randomCGFloat(min: 42.42, max:86) //=\u003e some CGFloat between -42.42 and 86\nfaker.number.randomDouble() //=\u003e some Double between 0 and 1000\nfaker.number.randomDouble(min: 0, max:1) //=\u003e some Double between 0 and 1\nfaker.number.increasingUniqueId() //=\u003e every call returns an unique int\n```\n\n### Phone number\n\n```swift\n\nfaker.phoneNumber.phoneNumber() //=\u003e \"1-333-333-3333\"        \nfaker.phoneNumber.cellPhone() //=\u003e \"333-333-3333\"\nfaker.phoneNumber.areaCode() //=\u003e \"201\"\nfaker.phoneNumber.exchangeCode() //=\u003e \"201\"\nfaker.phoneNumber.subscriberNumber() //=\u003e \"1234\"\nfaker.phoneNumber.numberExtension(length: Int) // \"123\"\n```\n\n### Team\n\n```swift\n\nfaker.team.name() //=\u003e \"bats\"         \nfaker.team.creature() //=\u003e \"Alabama bats\"\nfaker.team.state() // =\u003e \"Alabama\"\n```\n\n### Bank\n\n```swift\nfaker.bank.name() //=\u003e \"ABN AMRO CORPORATE FINANCE LIMITED\"         \nfaker.bank.swiftBic() //=\u003e \"AAFMGB21\"\nfaker.bank.iban() // =\u003e \"NL45BUNQ2209931378\"\nfaker.bank.bban() //=\u003e ABNA0136468471\n```\n\n### Hobbit\n\n```swift\nfaker.hobbit.character() //=\u003e \"Bilbo Baggins\"         \nfaker.hobbit.thorinsCompany() //=\u003e \"Thorin Oakenshield\"\nfaker.hobbit.quote() // =\u003e \"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?\"\nfaker.hobbit.location() //=\u003e \"Bree\"\n```\n\n### Car\n\n```swift\nfaker.car.brand() //=\u003e \"BMW\"\n```\n\n### Programming language\n\n```swift\nfaker.programming_language.name() //=\u003e \"Elixir\"         \nfaker.programming_language.creator() //=\u003e \"José Valim\"         \n```\n\n### Vehicle\n\n```swift\nfaker.vehicle.manufacture() //=\u003e \"Volkswagen\" \nfaker.vehicle.make() //=\u003e \"BMW\"\nfaker.vehicle.colors() //=\u003e \"Red\"\n```\n\n### Ham\n\n```swift\nfaker.ham.name() //=\u003e \"Taylor Ham\"         \n```\n\n### House\n\n```swift\nfaker.house.furniture() //=\u003e \"chair\"\nfaker.house.room() //=\u003e \"living room\" \n```\n\n## Installation\n\n**Fakery** is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod 'Fakery'\n```\n\nOr alternatively using the Swift Package Manager:\n\n```swift\nlet package = Package(\n    //…\n    dependencies[\n        .package(name: \"Fakery\", url: \"https://github.com/vadymmarkov/Fakery\", from: \"5.0.0\"))\n    ],\n    targets: [\n        .target(name: \"Foo\", dependencies: [\"Fakery\"]\n    ]\n)\n```\n\nUse of the Swift Package Manager requires Swift \u003e=5.3.\n\n## Contributing\n\nPlease see our [playbook](https://github.com/hyperoslo/playbook/blob/master/GIT_AND_GITHUB.md) for guidelines on contributing.\n\n## Author\n\nVadym Markov, markov.vadym@gmail.com\n\n## License\n\n**Fakery** is available under the MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadymmarkov%2Ffakery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvadymmarkov%2Ffakery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadymmarkov%2Ffakery/lists"}