Skip to content

Commit

Permalink
Add 'AbstractDataFaker' tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dimitrietataru committed Mar 4, 2024
1 parent 32c0551 commit 8b741c5
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 9 deletions.
76 changes: 76 additions & 0 deletions src/Ace.CSharp.DataFaker.Tests/AbstractDataFakerTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using Ace.CSharp.DataFaker.Exceptions;
using Ace.CSharp.DataFaker.Internal.Symbols;
using Ace.CSharp.DataFaker.Tests.Fakers;

namespace Ace.CSharp.DataFaker.Tests;

public sealed class AbstractDataFakerTests
{
[Fact]
internal void GivenOfWhenPropertyIsConfiguredThenGeneratesData()
{
// Arrange
AbstractDataFaker<FakeEntity> fakeEntity = new FakeEntity();

// Act
var entity = fakeEntity.Of<FooEntity>();

// Assert
entity.Should().NotBeNull().And.BeOfType<FooEntity>();
}

[Fact]
internal void GivenOfWhenPropertyIsNotConfiguredThenThrowsException()
{
// Arrange
AbstractDataFaker<FakeEntity> fakeEntity = new FakeEntity();

// Act
var action = () => fakeEntity.Of<BarEntity>();

// Assert
action.Should().Throw<InstanceFakerNotFoundException<BarEntity, FakeEntity>>();
}

[Fact]
internal void GivenManyOfWhenPropertyIsConfiguredThenGeneratesData()
{
// Arrange
AbstractDataFaker<FakeEntity> fakeEntity = new FakeEntity();

// Act
var entities = fakeEntity.ManyOf<FooEntity>();

// Assert
entities.Should().NotBeNull().And.BeOfType<List<FooEntity>>();
entities.Should().NotBeEmpty().And.HaveCount(Constants.ManyOfCount);
}

[Fact]
internal void GivenManyOfWhenPropertyIsConfiguredAndCountIsSpecifiedThenGeneratesData()
{
// Arrange
AbstractDataFaker<FakeEntity> fakeEntity = new FakeEntity();
int count = 10;

// Act
var entities = fakeEntity.ManyOf<FooEntity>(count);

// Assert
entities.Should().NotBeNull().And.BeOfType<List<FooEntity>>();
entities.Should().NotBeEmpty().And.HaveCount(count);
}

[Fact]
internal void GivenManyOfWhenPropertyIsNotConfiguredThenThrowsException()
{
// Arrange
AbstractDataFaker<FakeEntity> fakeEntity = new FakeEntity();

// Act
var action = () => fakeEntity.ManyOf<BarEntity>();

// Assert
action.Should().Throw<InstanceFakerNotFoundException<BarEntity, FakeEntity>>();
}
}
16 changes: 8 additions & 8 deletions src/Ace.CSharp.DataFaker.Tests/FakeManyOfTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ internal static void GivenManyOfWhenContainerIsNotGivenAndCountIsDefaultThenGene

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(Constants.ManyOfCount);
dtos.Should().NotBeEmpty().And.HaveCount(Constants.ManyOfCount);
}

[Fact]
Expand All @@ -30,7 +30,7 @@ internal static void GivenManyOfWhenContainerIsNotGivenAndCountIsSpecifiedThenGe

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(count);
dtos.Should().NotBeEmpty().And.HaveCount(count);
}

[Fact]
Expand Down Expand Up @@ -58,7 +58,7 @@ internal static void GivenManyOfWhenContainerIsConfiguredAndCountIsDefaultThenGe

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(Constants.ManyOfCount);
dtos.Should().NotBeEmpty().And.HaveCount(Constants.ManyOfCount);
}

[Fact]
Expand All @@ -72,7 +72,7 @@ internal static void GivenManyOfWhenContainerIsConfiguredAndCountIsSpecifiedThen

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(count);
dtos.Should().NotBeEmpty().And.HaveCount(count);
}

[Fact]
Expand Down Expand Up @@ -139,7 +139,7 @@ internal static void GivenManyOfOrDefaultWhenContainerIsConfiguredAndCountIsDefa

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(Constants.ManyOfCount);
dtos.Should().NotBeEmpty().And.HaveCount(Constants.ManyOfCount);
}

[Fact]
Expand All @@ -153,7 +153,7 @@ internal static void GivenManyOfOrDefaultWhenContainerIsConfiguredAndCountIsSpec

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<FooDto>>();
dtos.Should().HaveCount(count);
dtos.Should().NotBeEmpty().And.HaveCount(count);
}

[Fact]
Expand Down Expand Up @@ -181,7 +181,7 @@ internal static void GivenManyOfOrDefaultWhenContainerIsNotConfiguredAndCountIsD

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<BarDto>>();
dtos.Should().HaveCount(Constants.ManyOfCount);
dtos.Should().NotBeEmpty().And.HaveCount(Constants.ManyOfCount);
}

[Fact]
Expand All @@ -195,7 +195,7 @@ internal static void GivenManyOfOrDefaultWhenContainerIsNotConfiguredAndCountIsS

// Assert
dtos.Should().NotBeNull().And.BeOfType<List<BarDto>>();
dtos.Should().HaveCount(count);
dtos.Should().NotBeEmpty().And.HaveCount(count);
}

[Fact]
Expand Down
27 changes: 27 additions & 0 deletions src/Ace.CSharp.DataFaker.Tests/Fakers/FakeEntity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Bogus;

namespace Ace.CSharp.DataFaker.Tests.Fakers;

public sealed class FakeEntity : AbstractDataFaker<FakeEntity>
{
private Faker<FooEntity> FakeFooEntity =>
new Faker<FooEntity>(locale: LocaleCode)
.RuleFor(
person => person.Value,
func => func.Random.Number(1, 100))
.RuleFor(
person => person.Description,
func => func.Lorem.Sentence(wordCount: 10))
.StrictMode(ensureRulesForAllProperties: true);
}

internal sealed class FooEntity
{
public int Value { get; set; }
public string Description { get; set; } = default!;
}

internal sealed class BarEntity
{
public Guid Uuid { get; set; }
}
2 changes: 1 addition & 1 deletion src/Ace.CSharp.DataFaker/Fake.ManyOf.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public static List<TResult> ManyOf<TResult>(int minCount, int maxCount)

/// <summary>
/// <para>Generates an instance of <see cref="List{}"/>.</para>
/// Uses the configuration defined in the <see cref="{TContainer}"/> class.
/// <para>Uses the configuration defined in the <see cref="{TContainer}"/> class.</para>
/// </summary>
/// <param name="count">The number of items to create</param>
/// <typeparam name="TResult">The type of the result</typeparam>
Expand Down

0 comments on commit 8b741c5

Please sign in to comment.