diff --git a/Cartfile.private b/Cartfile.private index 3381bec..c2786fb 100644 --- a/Cartfile.private +++ b/Cartfile.private @@ -1,2 +1,2 @@ -github "Quick/Quick" "v0.9.2" -github "Quick/Nimble" "v4.0.0" +github "Quick/Quick" +github "Quick/Nimble" diff --git a/Cartfile.resolved b/Cartfile.resolved index 35cc93d..06a76c1 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,2 +1,2 @@ -github "Quick/Nimble" "v4.0.0" -github "Quick/Quick" "v0.9.2" +github "Quick/Nimble" "v5.0.0" +github "Quick/Quick" "v0.10.0" diff --git a/Fakery.xcodeproj/project.pbxproj b/Fakery.xcodeproj/project.pbxproj index 4b87e65..f8e8e20 100644 --- a/Fakery.xcodeproj/project.pbxproj +++ b/Fakery.xcodeproj/project.pbxproj @@ -591,7 +591,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = "Vadym Markov"; TargetAttributes = { BC827FA71BFA3CE1005F09A4 = { @@ -917,7 +917,7 @@ BC827FB91BFA3CE1005F09A4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -940,7 +940,7 @@ BC827FBA1BFA3CE1005F09A4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1005,8 +1005,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -1054,8 +1056,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -1076,6 +1080,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1086,6 +1091,7 @@ BCF0DF4F1BF9F77E00427DB4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1103,6 +1109,7 @@ BCF0DF501BF9F77E00427DB4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1143,6 +1150,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1164,6 +1172,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/Fakery.xcodeproj/xcshareddata/xcschemes/Fakery-Mac.xcscheme b/Fakery.xcodeproj/xcshareddata/xcschemes/Fakery-Mac.xcscheme index 1dfad6c..10e5e10 100644 --- a/Fakery.xcodeproj/xcshareddata/xcschemes/Fakery-Mac.xcscheme +++ b/Fakery.xcodeproj/xcshareddata/xcschemes/Fakery-Mac.xcscheme @@ -1,6 +1,6 @@ AnyObject? { + public func fetchRaw(_ key: String) -> Any? { let parts = key.components(separatedBy: ".") - guard let localeData = data[locale], var parsed = localeData["faker"] , !parts.isEmpty else { - return nil - } + guard let localeData = data[locale] as? [String: Any], + var parsed = localeData["faker"] as? [String: Any], + !parts.isEmpty else { return nil } + + var result: Any? for part in parts { - guard let parsedPart = parsed?[part] else { continue } + guard let parsedPart = parsed[part] as? [String: Any] else { + result = parsed[part] + continue + } + parsed = parsedPart + result = parsedPart } - return parsed as AnyObject? + return result } func parse(_ template: String, forSubject subject: String) -> String { @@ -124,7 +131,7 @@ public final class Parser { func loadData() { guard let localeData = provider.dataForLocale(locale), let parsedData = try? JSONSerialization.jsonObject(with: localeData, options: .allowFragments), - let json = parsedData as? [String: AnyObject] else { + let json = parsedData as? [String: Any] else { if locale != Config.defaultLocale { locale = Config.defaultLocale } else { diff --git a/Source/Data/Provider.swift b/Source/Data/Provider.swift index 98eaff6..77162f8 100644 --- a/Source/Data/Provider.swift +++ b/Source/Data/Provider.swift @@ -28,11 +28,13 @@ public final class Provider { } - if let path = path, - let fileURL: URL = URL(fileURLWithPath: path), - let data = try? Data(contentsOf: fileURL){ + if let path = path { + let fileURL = URL(fileURLWithPath: path) + + if let data = try? Data(contentsOf: fileURL) { translation = data translations[locale] = data + } } } diff --git a/Source/Faker.swift b/Source/Faker.swift index 7c8a4dd..f594a67 100644 --- a/Source/Faker.swift +++ b/Source/Faker.swift @@ -1,6 +1,6 @@ -open class Faker { +public final class Faker { - open var locale: String { + public var locale: String { didSet { if locale != oldValue { parser.locale = locale @@ -8,17 +8,17 @@ open class Faker { } } - open let address: Address - open let app: App - open let business: Business - open let company: Company - open let commerce: Commerce - open let internet: Internet - open let lorem: Lorem - open let name: Name - open let phoneNumber: PhoneNumber - open let team: Team - open let number: Number + public let address: Address + public let app: App + public let business: Business + public let company: Company + public let commerce: Commerce + public let internet: Internet + public let lorem: Lorem + public let name: Name + public let phoneNumber: PhoneNumber + public let team: Team + public let number: Number let parser: Parser diff --git a/Source/Generators/Address.swift b/Source/Generators/Address.swift index ce48c38..a040d21 100644 --- a/Source/Generators/Address.swift +++ b/Source/Generators/Address.swift @@ -1,20 +1,20 @@ import Foundation -open class Address: Generator { +public final class Address: Generator { - open func city() -> String { + public func city() -> String { return generate("address.city") } - open func streetName() -> String { + public func streetName() -> String { return generate("address.street_name") } - open func secondaryAddress() -> String { + public func secondaryAddress() -> String { return numerify(generate("address.secondary_address")) } - open func streetAddress(includeSecondary: Bool = false) -> String { + public func streetAddress(includeSecondary: Bool = false) -> String { var streetAddress = numerify(generate("address.street_address")) if includeSecondary { @@ -24,11 +24,11 @@ open class Address: Generator { return streetAddress } - open func buildingNumber() -> String { + public func buildingNumber() -> String { return bothify(generate("address.building_number")) } - open func postcode(stateAbbreviation: String = "") -> String { + public func postcode(stateAbbreviation: String = "") -> String { if stateAbbreviation.isEmpty { return bothify(generate("address.postcode")) } @@ -36,47 +36,47 @@ open class Address: Generator { return bothify(generate("address.postcode_by_state.\(stateAbbreviation)")) } - open func timeZone() -> String { + public func timeZone() -> String { return generate("address.time_zone") } - open func streetSuffix() -> String { + public func streetSuffix() -> String { return generate("address.street_suffix") } - open func citySuffix() -> String { + public func citySuffix() -> String { return generate("address.city_suffix") } - open func cityPrefix() -> String { + public func cityPrefix() -> String { return generate("address.city_prefix") } - open func stateAbbreviation() -> String { + public func stateAbbreviation() -> String { return generate("address.state_abbr") } - open func state() -> String { + public func state() -> String { return generate("address.state") } - open func county() -> String { + public func county() -> String { return generate("address.county") } - open func country() -> String { + public func country() -> String { return generate("address.country") } - open func countryCode() -> String { + public func countryCode() -> String { return generate("address.country_code") } - open func latitude() -> Double { + public func latitude() -> Double { return drand48() * 180.0 - 90.0 } - open func longitude() -> Double { + public func longitude() -> Double { return drand48() * 360.0 - 180.0 } } diff --git a/Source/Generators/App.swift b/Source/Generators/App.swift index 291d7de..f722248 100644 --- a/Source/Generators/App.swift +++ b/Source/Generators/App.swift @@ -1,14 +1,14 @@ -open class App: Generator { +public final class App: Generator { - open func name() -> String { + public func name() -> String { return generate("app.name") } - open func version() -> String { + public func version() -> String { return numerify(generate("app.version")) } - open func author() -> String { + public func author() -> String { return generate("app.author") } } diff --git a/Source/Generators/Business.swift b/Source/Generators/Business.swift index 1a037c7..5d64b63 100644 --- a/Source/Generators/Business.swift +++ b/Source/Generators/Business.swift @@ -1,16 +1,16 @@ import Foundation -open class Business: Generator { +public final class Business: Generator { - open func creditCardNumber() -> String { + public func creditCardNumber() -> String { return generate("business.credit_card_numbers") } - open func creditCardType() -> String { + public func creditCardType() -> String { return generate("business.credit_card_types") } - open func creditCardExpiryDate() -> Date? { + public func creditCardExpiryDate() -> Date? { let dateString = generate("business.credit_card_expiry_dates") return dateFormatter.date(from: dateString) } diff --git a/Source/Generators/Commerce.swift b/Source/Generators/Commerce.swift index 2adf2ad..00002b4 100644 --- a/Source/Generators/Commerce.swift +++ b/Source/Generators/Commerce.swift @@ -1,12 +1,12 @@ import Foundation -open class Commerce: Generator { +public final class Commerce: Generator { - open func color() -> String { + public func color() -> String { return generate("commerce.color") } - open func department(maximum: Int = 3, fixedAmount: Bool = false) -> String { + public func department(maximum: Int = 3, fixedAmount: Bool = false) -> String { let amount = fixedAmount ? maximum : 1 + Int(arc4random_uniform(UInt32(maximum))) let fetchedCategories = categories(amount) @@ -15,7 +15,7 @@ open class Commerce: Generator { var department = "" if count > 1 { - department = mergeCategories(fetchedCategories) + department = merge(categories: fetchedCategories) } else if count == 1 { department = fetchedCategories[0] } @@ -23,20 +23,20 @@ open class Commerce: Generator { return department } - open func productName() -> String { + public func productName() -> String { return generate("commerce.product_name.adjective") + " " + generate("commerce.product_name.material") + " " + generate("commerce.product_name.product") } - open func price() -> Double { + public func price() -> Double { let arc4randoMax:Double = 0x100000000 return floor(Double((Double(arc4random()) / arc4randoMax) * 100.0) * 100) / 100.0 } // MARK: - Helpers - func categories(_ amount: Int) -> [String] { + public func categories(_ amount: Int) -> [String] { var categories: [String] = [] while categories.count < amount { @@ -50,7 +50,7 @@ open class Commerce: Generator { return categories } - func mergeCategories(_ categories: [String]) -> String { + public func merge(categories: [String]) -> String { let separator = generate("separator") let commaSeparated = categories[0.. String { + public func name() -> String { return generate("company.name") } - open func suffix() -> String { + public func suffix() -> String { return generate("company.suffix") } - open func catchPhrase() -> String { + public func catchPhrase() -> String { return randomWordsFromKey("company.buzzwords") } - open func bs() -> String { + public func bs() -> String { return randomWordsFromKey("company.bs") } - open func logo() -> String { + public func logo() -> String { let number = Int(arc4random_uniform(13)) + 1 return "http://pigment.github.io/fake-logos/logos/medium/color/\(number).png" } diff --git a/Source/Generators/Generator.swift b/Source/Generators/Generator.swift index 20ac18f..acab314 100644 --- a/Source/Generators/Generator.swift +++ b/Source/Generators/Generator.swift @@ -1,6 +1,6 @@ import Foundation -open class Generator { +public class Generator { public struct Constants { public static let uppercaseLetters = Array("ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters) @@ -18,13 +18,13 @@ open class Generator { dateFormatter.dateFormat = "yyyy-MM-dd" } - open func generate(_ key: String) -> String { + public func generate(_ key: String) -> String { return parser.fetch(key) } // MARK: - Filling - open func numerify(_ string: String) -> String { + public func numerify(_ string: String) -> String { let count = UInt32(Constants.numbers.count) return String(string.characters.enumerated().map { (index, item) in @@ -35,7 +35,7 @@ open class Generator { }) } - open func letterify(_ string: String) -> String { + public func letterify(_ string: String) -> String { return String(string.characters.enumerated().map { (index, item) in let count = UInt32(Constants.uppercaseLetters.count) let char = Constants.uppercaseLetters[Int(arc4random_uniform(count))] @@ -43,18 +43,18 @@ open class Generator { }) } - open func bothify(_ string: String) -> String { + public func bothify(_ string: String) -> String { return letterify(numerify(string)) } - open func alphaNumerify(_ string: String) -> String { + public func alphaNumerify(_ string: String) -> String { return string.replacingOccurrences(of: "[^A-Za-z0-9_]", with: "", options: .regularExpression, range: nil) } - open func randomWordsFromKey(_ key: String) -> String { + public func randomWordsFromKey(_ key: String) -> String { var string = "" var list = [String]() diff --git a/Source/Generators/Internet.swift b/Source/Generators/Internet.swift index 2cc2c09..c0bd5f9 100644 --- a/Source/Generators/Internet.swift +++ b/Source/Generators/Internet.swift @@ -1,6 +1,6 @@ import Foundation -open class Internet: Generator { +public final class Internet: Generator { let lorem: Lorem @@ -9,7 +9,7 @@ open class Internet: Generator { super.init(parser: parser) } - open func username(separator: String? = nil) -> String { + public func username(separator: String? = nil) -> String { var components: [String] = [ generate("name.first_name"), generate("name.last_name"), @@ -24,15 +24,16 @@ open class Internet: Generator { gap = sep } - return components[0.. String { + public func domainName(_ alphaNumericOnly: Bool = true) -> String { return domainWord(alphaNumericOnly: alphaNumericOnly) + "." + domainSuffix() } - open func domainWord(alphaNumericOnly: Bool = true) -> String { + public func domainWord(alphaNumericOnly: Bool = true) -> String { let nameParts = generate("company.name").components(separatedBy: " ") var name = "" @@ -47,19 +48,19 @@ open class Internet: Generator { return result.lowercased() } - open func domainSuffix() -> String { + public func domainSuffix() -> String { return generate("internet.domain_suffix") } - open func email() -> String { + public func email() -> String { return [username(), domainName()].joined(separator: "@") } - open func freeEmail() -> String { + public func freeEmail() -> String { return [username(), generate("internet.free_email")].joined(separator: "@") } - open func safeEmail() -> String { + public func safeEmail() -> String { let topLevelDomains = ["org", "com", "net"] let count = UInt32(topLevelDomains.count) let topLevelDomain = topLevelDomains[Int(arc4random_uniform(count))] @@ -67,7 +68,7 @@ open class Internet: Generator { return [username(), "example." + topLevelDomain].joined(separator: "@") } - open func password(minimumLength: Int = 8, maximumLength: Int = 16) -> String { + public func password(minimumLength: Int = 8, maximumLength: Int = 16) -> String { var temp = lorem.characters(amount: minimumLength) let diffLength = maximumLength - minimumLength @@ -79,7 +80,7 @@ open class Internet: Generator { return temp } - open func ipV4Address() -> String { + public func ipV4Address() -> String { let ipRand = { 2 + arc4random() % 253 } @@ -87,7 +88,7 @@ open class Internet: Generator { return String(format: "%d.%d.%d.%d", ipRand(), ipRand(), ipRand(), ipRand()) } - open func ipV6Address() -> String { + public func ipV6Address() -> String { var components: [String] = [] for _ in 1..<8 { @@ -97,15 +98,15 @@ open class Internet: Generator { return components.joined(separator: ":") } - open func url() -> String { + public func url() -> String { return "http://\(domainName())/\(username())" } - open func image(width: Int = 320, height: Int = 200) -> String { + public func image(width: Int = 320, height: Int = 200) -> String { return "http://lorempixel.com/\(width)/\(height)" } - open func templateImage(width: Int = 320, height: Int = 200, + public func templateImage(width: Int = 320, height: Int = 200, backColorHex: String = "000000", frontColorHex: String = "ffffff") -> String { return "http://dummyimage.com/\(width)x\(height)/\(backColorHex)/\(frontColorHex)" } diff --git a/Source/Generators/Lorem.swift b/Source/Generators/Lorem.swift index ac49047..69595c0 100644 --- a/Source/Generators/Lorem.swift +++ b/Source/Generators/Lorem.swift @@ -1,12 +1,12 @@ import Foundation -open class Lorem: Generator { +public final class Lorem: Generator { - open func word() -> String { + public func word() -> String { return generate("lorem.words") } - open func words(amount: Int = 3) -> String { + public func words(amount: Int = 3) -> String { var words: [String] = [] for _ in 0.. String { + public func character() -> String { return characters(amount: 1) } - open func characters(amount: Int = 255) -> String { + public func characters(amount: Int = 255) -> String { var chars = "" if amount > 0 { @@ -33,14 +33,14 @@ open class Lorem: Generator { return chars } - open func sentence(wordsAmount: Int = 4) -> String { + public func sentence(wordsAmount: Int = 4) -> String { var sentence = words(amount: wordsAmount) + "." sentence.replaceSubrange(sentence.startIndex...sentence.startIndex, with: String(sentence[sentence.startIndex]).capitalized) return sentence } - open func sentences(amount: Int = 3) -> String { + public func sentences(amount: Int = 3) -> String { var sentences: [String] = [] for _ in 0.. String { + public func paragraph(sentencesAmount: Int = 3) -> String { return sentences(amount: sentencesAmount) } - open func paragraphs(amount: Int = 3) -> String { + public func paragraphs(amount: Int = 3) -> String { var paragraphs: [String] = [] for _ in 0.. String { + public func name() -> String { return generate("name.name") } - open func firstName() -> String { + public func firstName() -> String { return generate("name.first_name") } - open func lastName() -> String { + public func lastName() -> String { return generate("name.last_name") } - open func prefix() -> String { + public func prefix() -> String { return generate("name.prefix") } - open func suffix() -> String { + public func suffix() -> String { return generate("name.suffix") } - open func title() -> String { + public func title() -> String { return generate("name.title.descriptor") + " " + generate("name.title.level") + " " + generate("name.title.job") diff --git a/Source/Generators/Number.swift b/Source/Generators/Number.swift index 3aec18a..9ce6e11 100644 --- a/Source/Generators/Number.swift +++ b/Source/Generators/Number.swift @@ -1,31 +1,31 @@ import Foundation import CoreGraphics -open class Number { +public final class Number { fileprivate var lastUsedId: Int64 = 0 - open func randomBool() -> Bool { + public func randomBool() -> Bool { return randomInt() % 2 == 0 } - open func randomInt(min: Int = 0, max: Int = 1000) -> Int { + public func randomInt(min: Int = 0, max: Int = 1000) -> Int { return min + Int(arc4random_uniform(UInt32(max - min + 1))) } - open func randomFloat(min: Float = 0, max: Float = 1000) -> Float { + public func randomFloat(min: Float = 0, max: Float = 1000) -> Float { return (Float(arc4random()) / Float(UInt32.max)) * (max - min) + min } - open func randomCGFloat(min: CGFloat = 0, max: CGFloat = 1000) -> CGFloat { + public func randomCGFloat(min: CGFloat = 0, max: CGFloat = 1000) -> CGFloat { return CGFloat(Float(arc4random()) / Float(UInt32.max)) * (max - min) + min } - open func randomDouble(min: Double = 0, max: Double = 1000) -> Double { + public func randomDouble(min: Double = 0, max: Double = 1000) -> Double { return (Double(arc4random()) / Double(UInt32.max)) * (max - min) + min } - open func increasingUniqueId() -> Int { + public func increasingUniqueId() -> Int { OSAtomicIncrement64(&lastUsedId) return Int(lastUsedId) } diff --git a/Source/Generators/PhoneNumber.swift b/Source/Generators/PhoneNumber.swift index a66e228..59d4cb0 100644 --- a/Source/Generators/PhoneNumber.swift +++ b/Source/Generators/PhoneNumber.swift @@ -1,29 +1,29 @@ -open class PhoneNumber: Generator { +public final class PhoneNumber: Generator { - open func phoneNumber() -> String { + public func phoneNumber() -> String { return numerify(generate("phone_number.formats")) } - open func cellPhone() -> String { + public func cellPhone() -> String { return numerify(generate("cell_phone.formats")) } // US only - open func areaCode() -> String { + public func areaCode() -> String { return generate("phone_number.area_code") } // US only - open func exchangeCode() -> String { + public func exchangeCode() -> String { return generate("phone_number.exchange_code") } // US only - open func subscriberNumber() -> String { + public func subscriberNumber() -> String { return numerify("####") } - open func numberExtension(_ length: Int) -> String { + public func numberExtension(_ length: Int) -> String { var template = "" for _ in 1...length { diff --git a/Source/Generators/Team.swift b/Source/Generators/Team.swift index 2a61514..d57c876 100644 --- a/Source/Generators/Team.swift +++ b/Source/Generators/Team.swift @@ -1,14 +1,14 @@ -open class Team: Generator { +public final class Team: Generator { - open func name() -> String { + public func name() -> String { return generate("team.name") } - open func creature() -> String { + public func creature() -> String { return generate("team.creature") } - open func state() -> String { + public func state() -> String { return generate("address.state").capitalized } } diff --git a/Tests/Fakery/Data/ParserSpec.swift b/Tests/Fakery/Data/ParserSpec.swift index 97d5e79..a0239c2 100644 --- a/Tests/Fakery/Data/ParserSpec.swift +++ b/Tests/Fakery/Data/ParserSpec.swift @@ -65,7 +65,7 @@ class ParserSpec: QuickSpec { context("when the key is incorrect") { it("returns the empty text") { - if let dummy = parser.fetchRaw("dummy")?.string { + if let dummy = parser.fetchRaw("dummy") as? String { expect(dummy).to(beNil()) } } diff --git a/Tests/Fakery/Generators/CommerceSpec.swift b/Tests/Fakery/Generators/CommerceSpec.swift index a2f5b65..b2bd3f3 100644 --- a/Tests/Fakery/Generators/CommerceSpec.swift +++ b/Tests/Fakery/Generators/CommerceSpec.swift @@ -64,9 +64,9 @@ class CommerceSpec: QuickSpec { } } - describe("#mergeCategories") { + describe("#merge:categories") { it("returns the correct text") { - let text = commerce.mergeCategories(["One", "Two", "Three", "Four"]) + let text = commerce.merge(categories: ["One", "Two", "Three", "Four"]) expect(text).to(equal("One, Two, Three & Four")) } }