From 6419c65e2af17a384646328867f808411163a4fa Mon Sep 17 00:00:00 2001 From: Jamie Introcaso Date: Sun, 14 Oct 2018 11:40:15 -0400 Subject: [PATCH 1/2] added friends faker and tests (#66) * added friends faker and tests * Updated friends faker data to use date from faker ruby data * Added friends faker to static Faker class and Faker Container class * added tests for FakerContainer and Faker classes * changed order of fakers to reflect alphabetical order Resolves #32 --- src/FakerDotNet/Data/FriendsData.cs | 55 +++++++++++++++++ src/FakerDotNet/Faker.cs | 1 + src/FakerDotNet/FakerContainer.cs | 3 + src/FakerDotNet/Fakers/FriendsFaker.cs | 38 ++++++++++++ .../FakerDotNet.Tests/FakerContainerTests.cs | 7 +++ tests/FakerDotNet.Tests/FakerTests.cs | 6 ++ .../Fakers/FriendsFakerTests.cs | 59 +++++++++++++++++++ 7 files changed, 169 insertions(+) create mode 100644 src/FakerDotNet/Data/FriendsData.cs create mode 100644 src/FakerDotNet/Fakers/FriendsFaker.cs create mode 100644 tests/FakerDotNet.Tests/Fakers/FriendsFakerTests.cs diff --git a/src/FakerDotNet/Data/FriendsData.cs b/src/FakerDotNet/Data/FriendsData.cs new file mode 100644 index 0000000..41e2078 --- /dev/null +++ b/src/FakerDotNet/Data/FriendsData.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; + +namespace FakerDotNet.Data +{ + internal class FriendsData + { + public IEnumerable Characters => new[] + { + "Rachel Green", + "Joey Tribbiani", + "Phoebe Buffay", + "Chandler Bing", + "Monica Geller", + "Ross Geller", + "Richard Burke", + "Janice Goralnik", + "Gunther", + "Emily Waltham", + "Carol Willick", + "Miss Chanandler Bong" + }; + + public IEnumerable Locations => new[] + { + "Central Perk", + "Javu", + "945 Grove St Apt. 20", + "Ralph Lauren", + "New York Museum of Prehistoric History", + "Days of Our Lives", + "15 Yemen Road, Yemen" + }; + + public IEnumerable Quotes => new[] + { + "We were on a break!", + "Forty-two to twenty-one! Like the turkey, Ross is done!", + "SEVEN! SEVEN! SEVEN!", + "I'm Monica. I’m disgusting. I stalk guys and keep their underpants.", + "Fine judge all you want but... married a lesbian, left a man at the altar, fell in love with a gay ice dancer, threw a girl’s wooden leg in the fire, LIVE IN A BOX.", + "Welcome to the real world. It sucks. You’re gonna love it!", + "Sure I peed on her. And if I had to, I’d pee on any one of you!", + "If the homo sapiens were, in fact, HOMO sapiens…is that why they’re extinct?", + "It’s a moo point. It’s like a cow’s opinion; it doesn’t matter. It’s moo.", + "You could not be any more wrong. You could try, but you would not be successful.", + "You’ve been BAMBOOZLED!", + "It was summer… and it was hot. Rachel was there… A lonely grey couch…”OH LOOK!” cried Ned, and then the kingdom was his forever. The End.", + "Je m’appelle Claude", + "I’m not so good with the advice. Can I interest you in a sarcastic comment?", + "Raspberries? Good. Ladyfingers? Good. Beef? GOOD!", + "Could I BE wearing any more clothes?", + "Oh no, two women love me. They're both gorgeous and sexy. My wallet's too small for my fifties AND MY DIAMOND SHOES ARE TOO TIGHT." + }; + } +} diff --git a/src/FakerDotNet/Faker.cs b/src/FakerDotNet/Faker.cs index e677ab1..2f9c16d 100644 --- a/src/FakerDotNet/Faker.cs +++ b/src/FakerDotNet/Faker.cs @@ -12,6 +12,7 @@ public static class Faker public static IBooleanFaker Boolean { get; } = Container.Boolean; public static IDateFaker Date { get; } = Container.Date; public static IFakeFaker Fake { get; } = Container.Fake; + public static IFriendsFaker Friends { get; } = Container.Friends; public static INameFaker Name { get; } = Container.Name; public static INumberFaker Number { get; } = Container.Number; public static IRandomFaker Random { get; } = Container.Random; diff --git a/src/FakerDotNet/FakerContainer.cs b/src/FakerDotNet/FakerContainer.cs index 525352c..687ef10 100644 --- a/src/FakerDotNet/FakerContainer.cs +++ b/src/FakerDotNet/FakerContainer.cs @@ -10,6 +10,7 @@ internal interface IFakerContainer IBooleanFaker Boolean { get; } IDateFaker Date { get; } IFakeFaker Fake { get; } + IFriendsFaker Friends { get; } INameFaker Name { get; } INumberFaker Number { get; } IRandomFaker Random { get; } @@ -27,6 +28,7 @@ public FakerContainer() Boolean = new BooleanFaker(); Date = new DateFaker(); Fake = new FakeFaker(this); + Friends = new FriendsFaker(this); Name = new NameFaker(this); Number = new NumberFaker(); Random = new RandomFaker(); @@ -40,6 +42,7 @@ public FakerContainer() public IBooleanFaker Boolean { get; } public IDateFaker Date { get; } public IFakeFaker Fake { get; } + public IFriendsFaker Friends { get; } public INameFaker Name { get; } public INumberFaker Number { get; } public IRandomFaker Random { get; } diff --git a/src/FakerDotNet/Fakers/FriendsFaker.cs b/src/FakerDotNet/Fakers/FriendsFaker.cs new file mode 100644 index 0000000..c37a867 --- /dev/null +++ b/src/FakerDotNet/Fakers/FriendsFaker.cs @@ -0,0 +1,38 @@ +using FakerDotNet.Data; + +namespace FakerDotNet.Fakers +{ + public interface IFriendsFaker + { + string Character(); + string Location(); + string Quote(); + } + + internal class FriendsFaker : IFriendsFaker + { + private static readonly FriendsData Data = new FriendsData(); + + private readonly IFakerContainer _fakerContainer; + + public FriendsFaker(IFakerContainer fakerContainer) + { + _fakerContainer = fakerContainer; + } + + public string Character() + { + return _fakerContainer.Random.Element(Data.Characters); + } + + public string Location() + { + return _fakerContainer.Random.Element(Data.Locations); + } + + public string Quote() + { + return _fakerContainer.Random.Element(Data.Quotes); + } + } +} diff --git a/tests/FakerDotNet.Tests/FakerContainerTests.cs b/tests/FakerDotNet.Tests/FakerContainerTests.cs index 3e99612..c985561 100644 --- a/tests/FakerDotNet.Tests/FakerContainerTests.cs +++ b/tests/FakerDotNet.Tests/FakerContainerTests.cs @@ -51,6 +51,12 @@ public void Fake_returns_IFakeFaker() Assert.IsInstanceOf(_fakerContainer.Fake); } + [Test] + public void Friends_returns_IFriendsFaker() + { + Assert.IsInstanceOf(_fakerContainer.Friends); + } + [Test] public void Name_returns_INameFaker() { @@ -80,5 +86,6 @@ public void Zelda_returns_IZeldaFaker() { Assert.IsInstanceOf(_fakerContainer.Zelda); } + } } diff --git a/tests/FakerDotNet.Tests/FakerTests.cs b/tests/FakerDotNet.Tests/FakerTests.cs index c486590..e334b4f 100644 --- a/tests/FakerDotNet.Tests/FakerTests.cs +++ b/tests/FakerDotNet.Tests/FakerTests.cs @@ -43,6 +43,12 @@ public void Fake_returns_IFakeFaker() Assert.IsInstanceOf(Faker.Fake); } + [Test] + public void Friends_returns_IFriendsFaker() + { + Assert.IsInstanceOf(Faker.Friends); + } + [Test] public void Name_returns_INameFaker() { diff --git a/tests/FakerDotNet.Tests/Fakers/FriendsFakerTests.cs b/tests/FakerDotNet.Tests/Fakers/FriendsFakerTests.cs new file mode 100644 index 0000000..15da2b2 --- /dev/null +++ b/tests/FakerDotNet.Tests/Fakers/FriendsFakerTests.cs @@ -0,0 +1,59 @@ +using FakeItEasy; +using FakerDotNet.Data; +using FakerDotNet.Fakers; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FakerDotNet.Tests.Fakers +{ + [TestFixture] + [Parallelizable] + public class FriendsFakerTests + { + [SetUp] + public void SetUp() + { + _fakerContainer = A.Fake(); + _friendsFaker = new FriendsFaker(_fakerContainer); + } + + private static readonly FriendsData Data = new FriendsData(); + + private IFakerContainer _fakerContainer; + private IFriendsFaker _friendsFaker; + + [Test] + public void Character_returns_a_character() + { + A.CallTo(() => _fakerContainer.Random.Element( + A>.That.IsSameSequenceAs(Data.Characters))) + .Returns("Rachel Green"); + + Assert.AreEqual("Rachel Green", _friendsFaker.Character()); + } + + [Test] + public void Location_returns_a_location() + { + A.CallTo(() => _fakerContainer.Random.Element( + A>.That.IsSameSequenceAs(Data.Locations))) + .Returns("15 Yemen Road, Yemen"); + + Assert.AreEqual("15 Yemen Road, Yemen", _friendsFaker.Location()); + } + + [Test] + public void Quote_returns_a_quote() + { + A.CallTo(() => _fakerContainer.Random.Element( + A>.That.IsSameSequenceAs(Data.Quotes))) + .Returns("Forty-two to twenty-one! Like the turkey, Ross is done!"); + + Assert.AreEqual("Forty-two to twenty-one! Like the turkey, Ross is done!", _friendsFaker.Quote()); + } + } +} From b37a860a87a365d3040b74307f9e60cb2bd07092 Mon Sep 17 00:00:00 2001 From: Matti Petrelius Date: Mon, 15 Oct 2018 01:32:51 +0300 Subject: [PATCH 2/2] Fix unit tests that fail if the current culture does not use period as a decimal separator (#71) Fixes issue #70 --- tests/FakerDotNet.Tests/Fakers/AddressFakerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FakerDotNet.Tests/Fakers/AddressFakerTests.cs b/tests/FakerDotNet.Tests/Fakers/AddressFakerTests.cs index 0679f39..a04a05b 100644 --- a/tests/FakerDotNet.Tests/Fakers/AddressFakerTests.cs +++ b/tests/FakerDotNet.Tests/Fakers/AddressFakerTests.cs @@ -304,7 +304,7 @@ public void Latitude_returns_a_latitude() { A.CallTo(() => _fakerContainer.Number.Between(0, 180)).Returns(31.82743772556281); - Assert.AreEqual("-58.1725622744", _addressFaker.Latitude()); + Assert.AreEqual((-58.1725622744).ToString("#.##########"), _addressFaker.Latitude()); } [Test] @@ -312,7 +312,7 @@ public void Longitude_returns_a_longitude() { A.CallTo(() => _fakerContainer.Number.Between(0, 360)).Returns(23.344516179048668); - Assert.AreEqual("-156.655483821", _addressFaker.Longitude()); + Assert.AreEqual((-156.655483821).ToString("#.##########"), _addressFaker.Longitude()); } [Test]