diff --git a/lib/locales/fr-FR/address/cityName.js b/lib/locales/fr-FR/address/cityName.js new file mode 100644 index 00000000..32841cf0 --- /dev/null +++ b/lib/locales/fr-FR/address/cityName.js @@ -0,0 +1,102 @@ +module.exports = [ + "Paris", + "Marseille", + "Lyon", + "Toulouse", + "Nice", + "Nantes", + "Strasbourg", + "Montpellier", + "Bordeaux", + "Lille13", + "Rennes", + "Reims", + "Le Havre", + "Saint-Étienne", + "Toulon", + "Grenoble", + "Dijon", + "Angers", + "Saint-Denis", + "Villeurbanne", + "Le Mans", + "Aix-en-Provence", + "Brest", + "Nîmes", + "Limoges", + "Clermont-Ferrand", + "Tours", + "Amiens", + "Metz", + "Perpignan", + "Besançon", + "Orléans", + "Boulogne-Billancourt", + "Mulhouse", + "Rouen", + "Caen", + "Nancy", + "Saint-Denis", + "Saint-Paul", + "Montreuil", + "Argenteuil", + "Roubaix", + "Dunkerque14", + "Tourcoing", + "Nanterre", + "Avignon", + "Créteil", + "Poitiers", + "Fort-de-France", + "Courbevoie", + "Versailles", + "Vitry-sur-Seine", + "Colombes", + "Pau", + "Aulnay-sous-Bois", + "Asnières-sur-Seine", + "Rueil-Malmaison", + "Saint-Pierre", + "Antibes", + "Saint-Maur-des-Fossés", + "Champigny-sur-Marne", + "La Rochelle", + "Aubervilliers", + "Calais", + "Cannes", + "Le Tampon", + "Béziers", + "Colmar", + "Bourges", + "Drancy", + "Mérignac", + "Saint-Nazaire", + "Valence", + "Ajaccio", + "Issy-les-Moulineaux", + "Villeneuve-d'Ascq", + "Levallois-Perret", + "Noisy-le-Grand", + "Quimper", + "La Seyne-sur-Mer", + "Antony", + "Troyes", + "Neuilly-sur-Seine", + "Sarcelles", + "Les Abymes", + "Vénissieux", + "Clichy", + "Lorient", + "Pessac", + "Ivry-sur-Seine", + "Cergy", + "Cayenne", + "Niort", + "Chambéry", + "Montauban", + "Saint-Quentin", + "Villejuif", + "Hyères", + "Beauvais", + "Cholet" +]; diff --git a/lib/locales/fr-FR/address/countryWithCodes.js b/lib/locales/fr-FR/address/countryWithCodes.js new file mode 100644 index 00000000..aca916e9 --- /dev/null +++ b/lib/locales/fr-FR/address/countryWithCodes.js @@ -0,0 +1,257 @@ +/* Datasource: https://github.com/umpirsky/country-list */ + +module.exports = { + "AF": "Afghanistan", + "AX": "\u00c5land Islands", + "AL": "Albania", + "DZ": "Algeria", + "AS": "American Samoa", + "AD": "Andorra", + "AO": "Angola", + "AI": "Anguilla", + "AQ": "Antarctica", + "AG": "Antigua & Barbuda", + "AR": "Argentina", + "AM": "Armenia", + "AW": "Aruba", + "AC": "Ascension Island", + "AU": "Australia", + "AT": "Austria", + "AZ": "Azerbaijan", + "BS": "Bahamas", + "BH": "Bahrain", + "BD": "Bangladesh", + "BB": "Barbados", + "BY": "Belarus", + "BE": "Belgium", + "BZ": "Belize", + "BJ": "Benin", + "BM": "Bermuda", + "BT": "Bhutan", + "BO": "Bolivia", + "BA": "Bosnia & Herzegovina", + "BW": "Botswana", + "BR": "Brazil", + "IO": "British Indian Ocean Territory", + "VG": "British Virgin Islands", + "BN": "Brunei", + "BG": "Bulgaria", + "BF": "Burkina Faso", + "BI": "Burundi", + "KH": "Cambodia", + "CM": "Cameroon", + "CA": "Canada", + "IC": "Canary Islands", + "CV": "Cape Verde", + "BQ": "Caribbean Netherlands", + "KY": "Cayman Islands", + "CF": "Central African Republic", + "EA": "Ceuta & Melilla", + "TD": "Chad", + "CL": "Chile", + "CN": "China", + "CX": "Christmas Island", + "CC": "Cocos (Keeling) Islands", + "CO": "Colombia", + "KM": "Comoros", + "CG": "Congo - Brazzaville", + "CD": "Congo - Kinshasa", + "CK": "Cook Islands", + "CR": "Costa Rica", + "CI": "C\u00f4te d\u2019Ivoire", + "HR": "Croatia", + "CU": "Cuba", + "CW": "Cura\u00e7ao", + "CY": "Cyprus", + "CZ": "Czech Republic", + "DK": "Denmark", + "DG": "Diego Garcia", + "DJ": "Djibouti", + "DM": "Dominica", + "DO": "Dominican Republic", + "EC": "Ecuador", + "EG": "Egypt", + "SV": "El Salvador", + "GQ": "Equatorial Guinea", + "ER": "Eritrea", + "EE": "Estonia", + "ET": "Ethiopia", + "FK": "Falkland Islands", + "FO": "Faroe Islands", + "FJ": "Fiji", + "FI": "Finland", + "FR": "France", + "GF": "French Guiana", + "PF": "French Polynesia", + "TF": "French Southern Territories", + "GA": "Gabon", + "GM": "Gambia", + "GE": "Georgia", + "DE": "Germany", + "GH": "Ghana", + "GI": "Gibraltar", + "GR": "Greece", + "GL": "Greenland", + "GD": "Grenada", + "GP": "Guadeloupe", + "GU": "Guam", + "GT": "Guatemala", + "GG": "Guernsey", + "GN": "Guinea", + "GW": "Guinea-Bissau", + "GY": "Guyana", + "HT": "Haiti", + "HN": "Honduras", + "HK": "Hong Kong SAR China", + "HU": "Hungary", + "IS": "Iceland", + "IN": "India", + "ID": "Indonesia", + "IR": "Iran", + "IQ": "Iraq", + "IE": "Ireland", + "IM": "Isle of Man", + "IL": "Israel", + "IT": "Italy", + "JM": "Jamaica", + "JP": "Japan", + "JE": "Jersey", + "JO": "Jordan", + "KZ": "Kazakhstan", + "KE": "Kenya", + "KI": "Kiribati", + "XK": "Kosovo", + "KW": "Kuwait", + "KG": "Kyrgyzstan", + "LA": "Laos", + "LV": "Latvia", + "LB": "Lebanon", + "LS": "Lesotho", + "LR": "Liberia", + "LY": "Libya", + "LI": "Liechtenstein", + "LT": "Lithuania", + "LU": "Luxembourg", + "MO": "Macau SAR China", + "MK": "Macedonia", + "MG": "Madagascar", + "MW": "Malawi", + "MY": "Malaysia", + "MV": "Maldives", + "ML": "Mali", + "MT": "Malta", + "MH": "Marshall Islands", + "MQ": "Martinique", + "MR": "Mauritania", + "MU": "Mauritius", + "YT": "Mayotte", + "MX": "Mexico", + "FM": "Micronesia", + "MD": "Moldova", + "MC": "Monaco", + "MN": "Mongolia", + "ME": "Montenegro", + "MS": "Montserrat", + "MA": "Morocco", + "MZ": "Mozambique", + "MM": "Myanmar (Burma)", + "NA": "Namibia", + "NR": "Nauru", + "NP": "Nepal", + "NL": "Netherlands", + "NC": "New Caledonia", + "NZ": "New Zealand", + "NI": "Nicaragua", + "NE": "Niger", + "NG": "Nigeria", + "NU": "Niue", + "NF": "Norfolk Island", + "KP": "North Korea", + "MP": "Northern Mariana Islands", + "NO": "Norway", + "OM": "Oman", + "PK": "Pakistan", + "PW": "Palau", + "PS": "Palestinian Territories", + "PA": "Panama", + "PG": "Papua New Guinea", + "PY": "Paraguay", + "PE": "Peru", + "PH": "Philippines", + "PN": "Pitcairn Islands", + "PL": "Poland", + "PT": "Portugal", + "PR": "Puerto Rico", + "QA": "Qatar", + "RE": "R\u00e9union", + "RO": "Romania", + "RU": "Russia", + "RW": "Rwanda", + "WS": "Samoa", + "SM": "San Marino", + "ST": "S\u00e3o Tom\u00e9 & Pr\u00edncipe", + "SA": "Saudi Arabia", + "SN": "Senegal", + "RS": "Serbia", + "SC": "Seychelles", + "SL": "Sierra Leone", + "SG": "Singapore", + "SX": "Sint Maarten", + "SK": "Slovakia", + "SI": "Slovenia", + "SB": "Solomon Islands", + "SO": "Somalia", + "ZA": "South Africa", + "GS": "South Georgia & South Sandwich Islands", + "KR": "South Korea", + "SS": "South Sudan", + "ES": "Spain", + "LK": "Sri Lanka", + "BL": "St. Barth\u00e9lemy", + "SH": "St. Helena", + "KN": "St. Kitts & Nevis", + "LC": "St. Lucia", + "MF": "St. Martin", + "PM": "St. Pierre & Miquelon", + "VC": "St. Vincent & Grenadines", + "SD": "Sudan", + "SR": "Suriname", + "SJ": "Svalbard & Jan Mayen", + "SZ": "Swaziland", + "SE": "Sweden", + "CH": "Switzerland", + "SY": "Syria", + "TW": "Taiwan", + "TJ": "Tajikistan", + "TZ": "Tanzania", + "TH": "Thailand", + "TL": "Timor-Leste", + "TG": "Togo", + "TK": "Tokelau", + "TO": "Tonga", + "TT": "Trinidad & Tobago", + "TA": "Tristan da Cunha", + "TN": "Tunisia", + "TR": "Turkey", + "TM": "Turkmenistan", + "TC": "Turks & Caicos Islands", + "TV": "Tuvalu", + "UM": "U.S. Outlying Islands", + "VI": "U.S. Virgin Islands", + "UG": "Uganda", + "UA": "Ukraine", + "AE": "United Arab Emirates", + "GB": "United Kingdom", + "US": "United States", + "UY": "Uruguay", + "UZ": "Uzbekistan", + "VU": "Vanuatu", + "VA": "Vatican City", + "VE": "Venezuela", + "VN": "Vietnam", + "WF": "Wallis & Futuna", + "EH": "Western Sahara", + "YE": "Yemen", + "ZM": "Zambia", + "ZW": "Zimbabwe" +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/address/fr-FR b/lib/locales/fr-FR/address/fr-FR new file mode 100644 index 00000000..e69de29b diff --git a/lib/locales/fr-FR/address/index.js b/lib/locales/fr-FR/address/index.js new file mode 100644 index 00000000..283f410b --- /dev/null +++ b/lib/locales/fr-FR/address/index.js @@ -0,0 +1,63 @@ +import countries from "./countryWithCodes"; + +module.exports = { + countryAndCode() { + let country = this.random.objectElement(countries); + return { + code: Object.keys(country)[0], + name: country[Object.keys(country)[0]] + }; + }, + + state: [ + "Alsace", + "Aquitaine", + "Auvergne", + "Basse-Normandie", + "Bourgogne", + "Bretagne", + "Centre", + "Champagne-Ardenne", + "Corse", + "Franche-Comté", + "Haute-Normandie", + "Île-de-France", + "Languedoc-Roussillon", + "Limousin", + "Lorraine", + "Midi-Pyrénées", + "Nord-Pas-de-Calais", + "Pays de la Loire", + "Picardie", + "Poitou-Charentes", + "Provence-Alpes-Côte d'Azur", + "Rhône-Alpes" + ], + stateAbbr: [], + + city: require("./cityName"), + + street: [ + "#{address.buildingNumber} #{address.streetName}" + ], + + streetName: [ + "#{address.streetPrefix} #{address.streetSuffix}" + ], + + streetPrefix: require("./streetPrefix"), + + streetSuffix: require("./streetSuffix"), + + buildingNumber: [ + "####", + "###", + "##", + "#" + ], + + postCode: [ + "#####" + ] + +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/address/streetPrefix.js b/lib/locales/fr-FR/address/streetPrefix.js new file mode 100644 index 00000000..f341bff5 --- /dev/null +++ b/lib/locales/fr-FR/address/streetPrefix.js @@ -0,0 +1,10 @@ +module.exports = [ + "Allée, Voie", + "Rue", + "Avenue", + "Boulevard", + "Quai", + "Passage", + "Impasse", + "Place" +]; diff --git a/lib/locales/fr-FR/address/streetSuffix.js b/lib/locales/fr-FR/address/streetSuffix.js new file mode 100644 index 00000000..9eb16879 --- /dev/null +++ b/lib/locales/fr-FR/address/streetSuffix.js @@ -0,0 +1,68 @@ +module.exports = [ + "de l'Abbaye", + "Adolphe Mille", + "d'Alésia", + "d'Argenteuil", + "d'Assas", + "du Bac", + "de Paris", + "La Boétie", + "Bonaparte", + "de la Bûcherie", + "de Caumartin", + "Charlemagne", + "du Chat-qui-Pêche", + "de la Chaussée-d'Antin", + "du Dahomey", + "Dauphine", + "Delesseux", + "du Faubourg Saint-Honoré", + "du Faubourg-Saint-Denis", + "de la Ferronnerie", + "des Francs-Bourgeois", + "des Grands Augustins", + "de la Harpe", + "du Havre", + "de la Huchette", + "Joubert", + "Laffitte", + "Lepic", + "des Lombards", + "Marcadet", + "Molière", + "Monsieur-le-Prince", + "de Montmorency", + "Montorgueil", + "Mouffetard", + "de Nesle", + "Oberkampf", + "de l'Odéon", + "d'Orsel", + "de la Paix", + "des Panoramas", + "Pastourelle", + "Pierre Charron", + "de la Pompe", + "de Presbourg", + "de Provence", + "de Richelieu", + "de Rivoli", + "des Rosiers", + "Royale", + "d'Abbeville", + "Saint-Honoré", + "Saint-Bernard", + "Saint-Denis", + "Saint-Dominique", + "Saint-Jacques", + "Saint-Séverin", + "des Saussaies", + "de Seine", + "de Solférino", + "Du Sommerard", + "de Tilsitt", + "Vaneau", + "de Vaugirard", + "de la Victoire", + "Zadkine" +]; diff --git a/lib/locales/fr-FR/company/index.js b/lib/locales/fr-FR/company/index.js new file mode 100644 index 00000000..f03a1a21 --- /dev/null +++ b/lib/locales/fr-FR/company/index.js @@ -0,0 +1,17 @@ +module.exports = { + name: [ + "#{names.lastName} #{company.suffix}", + "#{names.lastName} et #{names.lastName}" + ], + + suffix: [ + "SARL", + "SA", + "EURL", + "SAS", + "SEM", + "SCOP", + "GIE", + "EI" + ] +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/index.js b/lib/locales/fr-FR/index.js new file mode 100644 index 00000000..cc65d0ed --- /dev/null +++ b/lib/locales/fr-FR/index.js @@ -0,0 +1,15 @@ +module.exports = { + _meta: { + id: "fr-FR", + fallback: null, + language: "French", + country: "France", + countryCode: "FR" + }, + + names: require("./names"), + phone: require("./phone"), + address: require("./address"), + company: require("./company"), + internet: require("./internet") +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/internet/index.js b/lib/locales/fr-FR/internet/index.js new file mode 100644 index 00000000..95fc9cc5 --- /dev/null +++ b/lib/locales/fr-FR/internet/index.js @@ -0,0 +1,18 @@ +module.exports = { + tld: [ + "com", + "fr", + "eu", + "info", + "name", + "net", + "org" + ], + + emailDomain: [ + "gmail.com", + "yahoo.fr", + "hotmail.fr" + ] + +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/names/firstName.js b/lib/locales/fr-FR/names/firstName.js new file mode 100644 index 00000000..91b89350 --- /dev/null +++ b/lib/locales/fr-FR/names/firstName.js @@ -0,0 +1,91 @@ +module.exports = [ + "Enzo", + "Lucas", + "Mathis", + "Nathan", + "Thomas", + "Hugo", + "Théo", + "Tom", + "Louis", + "Raphaël", + "Clément", + "Léo", + "Mathéo", + "Maxime", + "Alexandre", + "Antoine", + "Yanis", + "Paul", + "Baptiste", + "Alexis", + "Gabriel", + "Arthur", + "Jules", + "Ethan", + "Noah", + "Quentin", + "Axel", + "Evan", + "Mattéo", + "Romain", + "Valentin", + "Maxence", + "Noa", + "Adam", + "Nicolas", + "Julien", + "Mael", + "Pierre", + "Rayan", + "Victor", + "Mohamed", + "Adrien", + "Kylian", + "Sacha", + "Benjamin", + "Léa", + "Clara", + "Manon", + "Chloé", + "Camille", + "Ines", + "Sarah", + "Jade", + "Lola", + "Anaïs", + "Lucie", + "Océane", + "Lilou", + "Marie", + "Eva", + "Romane", + "Lisa", + "Zoe", + "Julie", + "Mathilde", + "Louise", + "Juliette", + "Clémence", + "Célia", + "Laura", + "Lena", + "Maëlys", + "Charlotte", + "Ambre", + "Maeva", + "Pauline", + "Lina", + "Jeanne", + "Lou", + "Noémie", + "Justine", + "Louna", + "Elisa", + "Alice", + "Emilie", + "Carla", + "Maëlle", + "Alicia", + "Mélissa" +]; diff --git a/lib/locales/fr-FR/names/index.js b/lib/locales/fr-FR/names/index.js new file mode 100644 index 00000000..1b4f2a3d --- /dev/null +++ b/lib/locales/fr-FR/names/index.js @@ -0,0 +1,33 @@ +module.exports = { + // Male first name + firstNameM: require("./firstName"), + + // Femail first name + firstNameF: require("./firstName"), + + // Male last name + lastNameM: require("./lastName"), + + // Female last name + lastNameF: require("./lastName"), + + prefix: [ + "M", + "Mme", + "Mlle", + "Dr", + "Prof" + ], + + suffix: [], + + name: [ + "#{names.prefix} #{names.firstName} #{names.lastName}", + "#{names.firstName} #{names.lastName}", + "#{names.lastName} #{names.firstName}" + ], + + nameM: module.exports.name, + nameF: module.exports.name + +}; \ No newline at end of file diff --git a/lib/locales/fr-FR/names/lastName.js b/lib/locales/fr-FR/names/lastName.js new file mode 100644 index 00000000..baab6f48 --- /dev/null +++ b/lib/locales/fr-FR/names/lastName.js @@ -0,0 +1,152 @@ +module.exports = [ + "Martin", + "Bernard", + "Dubois", + "Thomas", + "Robert", + "Richard", + "Petit", + "Durand", + "Leroy", + "Moreau", + "Simon", + "Laurent", + "Lefebvre", + "Michel", + "Garcia", + "David", + "Bertrand", + "Roux", + "Vincent", + "Fournier", + "Morel", + "Girard", + "Andre", + "Lefevre", + "Mercier", + "Dupont", + "Lambert", + "Bonnet", + "Francois", + "Martinez", + "Legrand", + "Garnier", + "Faure", + "Rousseau", + "Blanc", + "Guerin", + "Muller", + "Henry", + "Roussel", + "Nicolas", + "Perrin", + "Morin", + "Mathieu", + "Clement", + "Gauthier", + "Dumont", + "Lopez", + "Fontaine", + "Chevalier", + "Robin", + "Masson", + "Sanchez", + "Gerard", + "Nguyen", + "Boyer", + "Denis", + "Lemaire", + "Duval", + "Joly", + "Gautier", + "Roger", + "Roche", + "Roy", + "Noel", + "Meyer", + "Lucas", + "Meunier", + "Jean", + "Perez", + "Marchand", + "Dufour", + "Blanchard", + "Marie", + "Barbier", + "Brun", + "Dumas", + "Brunet", + "Schmitt", + "Leroux", + "Colin", + "Fernandez", + "Pierre", + "Renard", + "Arnaud", + "Rolland", + "Caron", + "Aubert", + "Giraud", + "Leclerc", + "Vidal", + "Bourgeois", + "Renaud", + "Lemoine", + "Picard", + "Gaillard", + "Philippe", + "Leclercq", + "Lacroix", + "Fabre", + "Dupuis", + "Olivier", + "Rodriguez", + "Da silva", + "Hubert", + "Louis", + "Charles", + "Guillot", + "Riviere", + "Le gall", + "Guillaume", + "Adam", + "Rey", + "Moulin", + "Gonzalez", + "Berger", + "Lecomte", + "Menard", + "Fleury", + "Deschamps", + "Carpentier", + "Julien", + "Benoit", + "Paris", + "Maillard", + "Marchal", + "Aubry", + "Vasseur", + "Le roux", + "Renault", + "Jacquet", + "Collet", + "Prevost", + "Poirier", + "Charpentier", + "Royer", + "Huet", + "Baron", + "Dupuy", + "Pons", + "Paul", + "Laine", + "Carre", + "Breton", + "Remy", + "Schneider", + "Perrot", + "Guyot", + "Barre", + "Marty", + "Cousin" +]; diff --git a/lib/locales/fr-FR/phone/index.js b/lib/locales/fr-FR/phone/index.js new file mode 100644 index 00000000..26970217 --- /dev/null +++ b/lib/locales/fr-FR/phone/index.js @@ -0,0 +1,18 @@ +module.exports = { + number: [ + "01########", + "02########", + "03########", + "04########", + "05########", + "06########", + "07########", + "+33 1########", + "+33 2########", + "+33 3########", + "+33 4########", + "+33 5########", + "+33 6########", + "+33 7########" + ] +}; \ No newline at end of file diff --git a/test/specs/locales/fr-FR/index.spec.js b/test/specs/locales/fr-FR/index.spec.js new file mode 100644 index 00000000..f5a66c2f --- /dev/null +++ b/test/specs/locales/fr-FR/index.spec.js @@ -0,0 +1,87 @@ +import { expect } from "chai"; + +import Fakerator from "lib/fakerator"; + +describe("Locale fr-FR", () => { + + let fakerator; + + beforeEach( () => { + fakerator = new Fakerator("fr-FR"); + fakerator.seed(5050); + }); + + it("check locale definitions", () => { + expect(fakerator.locale.names).to.be.an("Object"); + expect(fakerator.locale.names.firstNameM).to.be.length(89); + + expect(fakerator.locale.phone).to.be.an("Object"); + expect(fakerator.locale.address).to.be.an("Object"); + expect(fakerator.locale.company).to.be.an("Object"); + expect(fakerator.locale.internet).to.be.an("Object"); + }); + + it("check names definitions", () => { + expect(fakerator.names.firstName()).to.be.equal("Lilou"); + expect(fakerator.names.lastName()).to.be.equal("Rodriguez"); + expect(fakerator.names.name()).to.be.equal("Victor Roussel"); + }); + + it("check company definitions", () => { + expect(fakerator.company.name()).to.be.equal("Royer SCOP"); + }); + + it("check phone definitions", () => { + expect(fakerator.phone.number()).to.be.equal("0168634492"); + }); + + it("check address definitions", () => { + expect(fakerator.address.city()).to.be.equal("Paris"); + expect(fakerator.address.cityPrefix()).to.be.equal("New"); + expect(fakerator.address.citySuffix()).to.be.equal("side"); + expect(fakerator.address.street()).to.be.equal("449 Passage Saint-Jacques"); + expect(fakerator.address.streetName()).to.be.equal("Avenue Charlemagne"); + expect(fakerator.address.buildingNumber()).to.be.equal("60"); + expect(fakerator.address.postCode()).to.be.equal("40699"); + expect(fakerator.address.state()).to.be.equal("Auvergne"); + }); + + it("check internet definitions", () => { + expect(fakerator.internet.userName()).to.be.equal("lilou.rodriguez4492"); + expect(fakerator.internet.domain()).to.be.equal("clmentdupont.info"); + expect(fakerator.internet.emailDomain()).to.be.equal("hotmail.fr"); + expect(fakerator.internet.email()).to.be.equal("lisa91@yahoo.fr"); + }); + + it("check entity.user", () => { + let user = fakerator.entity.user(); + expect(user).to.be.an("Object"); + //console.log(user); + + expect(user).to.have.property("firstName").an("String"); + expect(user).to.have.property("lastName").an("String"); + expect(user).to.have.property("userName").an("String"); + expect(user).to.have.property("password").an("String"); + expect(user).to.have.property("email").an("String"); + expect(user).to.have.property("phone").an("String"); + expect(user).to.have.property("dob").an("Date"); + expect(user).to.have.property("website").an("String"); + expect(user).to.have.property("ip").an("String"); + expect(user).to.have.property("avatar").an("String"); + expect(user).to.have.property("gravatar").an("String"); + expect(user).to.have.property("status").an("Boolean"); + expect(user).to.have.property("address").an("Object"); + + expect(user.address).to.have.property("country").an("String"); + expect(user.address).to.have.property("countryCode").an("String").length(2); + expect(user.address).to.have.property("state").an("String"); + expect(user.address).to.have.property("city").an("String"); + expect(user.address).to.have.property("street").an("String"); + expect(user.address).to.have.property("zip").an("String"); + expect(user.address).to.have.property("geo").an("Object"); + expect(user.address.geo).to.have.property("latitude").an("Number"); + expect(user.address.geo).to.have.property("longitude").an("Number"); + + }); + +}) \ No newline at end of file