Skip to content

Commit

Permalink
Added the Business faker (#76)
Browse files Browse the repository at this point in the history
* Added the documentation.

* Implemented the Business faker.

* Added the BusinessFaker to the faker container and main faker class.
  • Loading branch information
mrstebo committed Oct 16, 2018
1 parent 4610a7f commit 518addc
Show file tree
Hide file tree
Showing 9 changed files with 148 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Contents
- [Faker.App](doc/app.md)
- [Faker.Book](doc/book.md)
- [Faker.Boolean](doc/boolean.md)
- [Faker.Business](doc/business.md)
- [Faker.Date](doc/date.md)
- [Faker.Fake](doc/fake.md)
- [Faker.Lorem](doc/lorem.md)
Expand Down
9 changes: 9 additions & 0 deletions doc/business.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Faker.Business

```cs
Faker.Business.CreditCardNumber() //=> "1228-1221-1221-1431"
Faker.Business.CreditCardExpiryDate() //=> <DateTime: 2015-11-11 ((2457338j,0s,0n),+0s,2299161j)>
Faker.Business.CreditCardType() //=> "visa"
```
31 changes: 31 additions & 0 deletions src/FakerDotNet/Data/BusinessData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Collections.Generic;

namespace FakerDotNet.Data
{
internal static class BusinessData
{
public static readonly IEnumerable<string> CreditCardNumbers = new[]
{
"1234-2121-1221-1211",
"1212-1221-1121-1234",
"1211-1221-1234-2201",
"1228-1221-1221-1431"
};

public static readonly IEnumerable<string> CreditCardTypes = new[]
{
"visa",
"mastercard",
"american_express",
"discover",
"diners_club",
"jcb",
"switch",
"solo",
"dankort",
"maestro",
"forbrugsforeningen",
"laser"
};
}
}
1 change: 1 addition & 0 deletions src/FakerDotNet/Faker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public static class Faker
public static IAppFaker App { get; } = Container.App;
public static IBookFaker Book { get; } = Container.Book;
public static IBooleanFaker Boolean { get; } = Container.Boolean;
public static IBusinessFaker Business { get; } = Container.Business;
public static IDateFaker Date { get; } = Container.Date;
public static IFakeFaker Fake { get; } = Container.Fake;
public static IFriendsFaker Friends { get; } = Container.Friends;
Expand Down
3 changes: 3 additions & 0 deletions src/FakerDotNet/FakerContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ internal interface IFakerContainer
IAppFaker App { get; }
IBookFaker Book { get; }
IBooleanFaker Boolean { get; }
IBusinessFaker Business { get; }
IDateFaker Date { get; }
IFakeFaker Fake { get; }
IFriendsFaker Friends { get; }
Expand All @@ -28,6 +29,7 @@ public FakerContainer()
App = new AppFaker(this);
Book = new BookFaker(this);
Boolean = new BooleanFaker();
Business = new BusinessFaker(this);
Date = new DateFaker();
Fake = new FakeFaker(this);
Friends = new FriendsFaker(this);
Expand All @@ -44,6 +46,7 @@ public FakerContainer()
public IAppFaker App { get; }
public IBookFaker Book { get; }
public IBooleanFaker Boolean { get; }
public IBusinessFaker Business { get; }
public IDateFaker Date { get; }
public IFakeFaker Fake { get; }
public IFriendsFaker Friends { get; }
Expand Down
37 changes: 37 additions & 0 deletions src/FakerDotNet/Fakers/BusinessFaker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System;
using FakerDotNet.Data;

namespace FakerDotNet.Fakers
{
public interface IBusinessFaker
{
string CreditCardNumber();
DateTime CreditCardExpiryDate();
string CreditCardType();
}

internal class BusinessFaker : IBusinessFaker
{
private readonly IFakerContainer _fakerContainer;

public BusinessFaker(IFakerContainer fakerContainer)
{
_fakerContainer = fakerContainer;
}

public string CreditCardNumber()
{
return _fakerContainer.Random.Element(BusinessData.CreditCardNumbers);
}

public DateTime CreditCardExpiryDate()
{
return _fakerContainer.Date.Forward(365 * (int) _fakerContainer.Number.Between(1, 5));
}

public string CreditCardType()
{
return _fakerContainer.Random.Element(BusinessData.CreditCardTypes);
}
}
}
6 changes: 6 additions & 0 deletions tests/FakerDotNet.Tests/FakerContainerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ public void Boolean_returns_IBooleanFaker()
Assert.IsInstanceOf<IBooleanFaker>(_fakerContainer.Boolean);
}

[Test]
public void Business_returns_IBusinessFaker()
{
Assert.IsInstanceOf<IBusinessFaker>(_fakerContainer.Business);
}

[Test]
public void Date_returns_IDateFaker()
{
Expand Down
7 changes: 6 additions & 1 deletion tests/FakerDotNet.Tests/FakerTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using FakeItEasy;
using FakerDotNet.Fakers;
using NUnit.Framework;

Expand Down Expand Up @@ -32,6 +31,12 @@ public void Boolean_returns_IBooleanFaker()
Assert.IsInstanceOf<IBooleanFaker>(Faker.Boolean);
}

[Test]
public void Business_returns_IBusinessFaker()
{
Assert.IsInstanceOf<IBusinessFaker>(Faker.Business);
}

[Test]
public void Date_returns_IDateFaker()
{
Expand Down
54 changes: 54 additions & 0 deletions tests/FakerDotNet.Tests/Fakers/BusinessFakerTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using FakeItEasy;
using FakerDotNet.Data;
using FakerDotNet.Fakers;
using NUnit.Framework;

namespace FakerDotNet.Tests.Fakers
{
[TestFixture]
[Parallelizable]
public class BusinessFakerTests
{
[SetUp]
public void SetUp()
{
_fakerContainer = A.Fake<IFakerContainer>();
_businessFaker = new BusinessFaker(_fakerContainer);
}

private IFakerContainer _fakerContainer;
private IBusinessFaker _businessFaker;

[Test]
public void CreditCardNumber_returns_a_credit_card_number()
{
A.CallTo(() => _fakerContainer.Random.Element(BusinessData.CreditCardNumbers))
.Returns("1228-1221-1221-1431");

Assert.AreEqual("1228-1221-1221-1431", _businessFaker.CreditCardNumber());
}

[Test]
public void CreditCardExpiryDate_returns_a_credit_card_expiry_date()
{
var expectedDate = DateTime.UtcNow.AddYears(1);

A.CallTo(() => _fakerContainer.Date.Forward(365 * 1))
.Returns(expectedDate);
A.CallTo(() => _fakerContainer.Number.Between(1, 5))
.Returns(1);

Assert.AreEqual(expectedDate, _businessFaker.CreditCardExpiryDate());
}

[Test]
public void CreditCardType_returns_a_credit_card_type()
{
A.CallTo(() => _fakerContainer.Random.Element(BusinessData.CreditCardTypes))
.Returns("visa");

Assert.AreEqual("visa", _businessFaker.CreditCardType());
}
}
}

0 comments on commit 518addc

Please sign in to comment.