diff --git a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/BogusNugetPackage.csproj b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/BogusNugetPackage.csproj
index 6f3921722a..c731a61324 100644
--- a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/BogusNugetPackage.csproj
+++ b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/BogusNugetPackage.csproj
@@ -2,19 +2,20 @@
Exe
- net7.0
+ net10.0
enable
enable
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
diff --git a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/DataGenerator.cs b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/DataGenerator.cs
index 969831b6be..d6ffc2e22b 100644
--- a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/DataGenerator.cs
+++ b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/DataGenerator.cs
@@ -7,8 +7,8 @@
namespace BogusNugetPackage;
public static class DataGenerator
{
- public static readonly List Employees = new();
- public static readonly List Vehicles = new();
+ public static readonly List Employees = [];
+ public static readonly List Vehicles = [];
public const int NumberOfEmployees = 5;
public const int NumberOfVehiclesPerEmployee = 2;
@@ -17,7 +17,7 @@ public static List GetSeededEmployeesFromDb()
{
using var employeeDbContext = new EmployeeContext();
- employeeDbContext.Database.EnsureCreated();
+ employeeDbContext.Database.Migrate();
var dbEmployeesWithVehicles = employeeDbContext.Employees
.Include(e => e.Vehicles)
@@ -31,14 +31,23 @@ public static void InitBogusData()
var employeeGenerator = GetEmployeeGenerator();
var generatedEmployees = employeeGenerator.Generate(NumberOfEmployees);
Employees.AddRange(generatedEmployees);
- generatedEmployees.ForEach(e => Vehicles.AddRange(GetBogusVehicleData(e.Id)));
+ }
+
+ public static List GenerateRepeatableVehicles(int seed)
+ {
+ return new Faker()
+ .UseSeed(seed)
+ .RuleFor(v => v.Id, f => f.Random.Guid())
+ .RuleFor(v => v.Manufacturer, f => f.Vehicle.Manufacturer())
+ .RuleFor(v => v.Fuel, f => f.Vehicle.Fuel())
+ .Generate(NumberOfVehiclesPerEmployee);
}
private static List GetBogusVehicleData(Guid employeeId)
{
var vehicleGenerator = GetVehicleGenerator(employeeId);
var generatedVehicles = vehicleGenerator.Generate(NumberOfVehiclesPerEmployee);
-
+ Vehicles.AddRange(generatedVehicles);
return generatedVehicles;
}
@@ -52,7 +61,11 @@ private static Faker GetEmployeeGenerator()
.RuleFor(e => e.Email, (f, e) => f.Internet.Email(e.FirstName, e.LastName))
.RuleFor(e => e.AboutMe, f => f.Lorem.Paragraph(1))
.RuleFor(e => e.YearsOld, f => f.Random.Int(18, 90))
- .RuleFor(e => e.Personality, f => f.PickRandom());
+ .RuleFor(e => e.Personality, f => f.PickRandom())
+ .RuleFor(e => e.Vehicles, (_, e) =>
+ {
+ return GetBogusVehicleData(e.Id);
+ });
}
private static Faker GetVehicleGenerator(Guid employeeId)
diff --git a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/Database/EmployeeContext.cs b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/Database/EmployeeContext.cs
index f0647a5f2a..597ddfcf33 100644
--- a/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/Database/EmployeeContext.cs
+++ b/dotnet-client-libraries/BogusNugetPackage/BogusNugetPackage/Database/EmployeeContext.cs
@@ -9,15 +9,17 @@ public sealed class EmployeeContext : DbContext
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
- options.UseSqlServer("Server=localhost;Database=EmployeeDb;Trusted_Connection=True;MultipleActiveResultSets=True;TrustServerCertificate=True");
- options.EnableSensitiveDataLogging();
- }
+ options.UseSqlServer("Server=localhost;Database=EmployeeDb;Trusted_Connection=True;MultipleActiveResultSets=True;TrustServerCertificate=True")
+ .UseSeeding((context, _) =>
+ {
+ if (context.Set().Any())
+ {
+ return;
+ }
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- base.OnModelCreating(modelBuilder);
-
- modelBuilder.Entity().HasData(DataGenerator.Employees);
- modelBuilder.Entity().HasData(DataGenerator.Vehicles);
+ context.Set().AddRange(DataGenerator.Employees);
+ context.SaveChanges();
+ });
+ options.EnableSensitiveDataLogging();
}
}
diff --git a/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.cs b/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.cs
index a03051e2d3..82532e978a 100644
--- a/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.cs
+++ b/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.cs
@@ -1,4 +1,5 @@
-using BogusNugetPackage;
+using Bogus;
+using BogusNugetPackage;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -29,12 +30,22 @@ public void WhenGettingSingleVehicle_ThenObjectIsNotNull()
}
[Fact]
- public void WhenGettingSingleEmployee_ThenEmailContainsLastName()
+ public void WhenGettingSingleEmployee_ThenEmailStartsWithFirstName()
{
DataGenerator.InitBogusData();
var employee = DataGenerator.Employees.First();
- Assert.Contains(employee.LastName, employee.Email);
+ // Bogus slugifies the name for the email, so D'angelo becomes Dangelo
+ Assert.StartsWith(Utils.Slugify(employee.FirstName), employee.Email);
+ }
+
+ [Fact]
+ public void WhenGeneratingWithTheSameSeed_ThenVehiclesAreEqual()
+ {
+ var first = DataGenerator.GenerateRepeatableVehicles(1338);
+ var second = DataGenerator.GenerateRepeatableVehicles(1338);
+
+ Assert.Equal(first.Select(v => v.ToString()), second.Select(v => v.ToString()));
}
}
diff --git a/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.csproj b/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.csproj
index 81a6582d3f..5eac8b4304 100644
--- a/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.csproj
+++ b/dotnet-client-libraries/BogusNugetPackage/Tests/Tests.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net10.0
enable
enable
@@ -9,13 +9,13 @@
-
-
-
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all