11
22using Bogus ;
3- using JsonApiBugReport . Data ;
4- using JsonApiBugReport . Data . Enums ;
53using Microsoft . EntityFrameworkCore ;
64using Microsoft . Extensions . DependencyInjection ;
75using System ;
8- using System . Collections . Generic ;
96using System . Linq ;
107
118namespace JsonApiBugReport . Data . DummySeed ;
@@ -27,6 +24,7 @@ public static void Initialize(IServiceProvider serviceProvider)
2724
2825 // Seed Users
2926 var userFaker = new Faker < User > ( )
27+ . UseUtc ( )
3028 . RuleFor ( u => u . FirstName , f => f . Name . FirstName ( ) )
3129 . RuleFor ( u => u . LastName , f => f . Name . LastName ( ) )
3230 . RuleFor ( u => u . Email , f => f . Internet . Email ( ) )
@@ -40,6 +38,7 @@ public static void Initialize(IServiceProvider serviceProvider)
4038
4139 // Seed UnitGroups
4240 var unitGroupFaker = new Faker < UnitGroup > ( )
41+ . UseUtc ( )
4342 . RuleFor ( ug => ug . Name , f => f . Commerce . Department ( ) )
4443 . RuleFor ( ug => ug . Description , f => f . Lorem . Sentence ( ) )
4544 . RuleFor ( ug => ug . IsActive , f => f . Random . Bool ( ) )
@@ -53,6 +52,7 @@ public static void Initialize(IServiceProvider serviceProvider)
5352
5453 // Seed Units
5554 var unitFaker = new Faker < Unit > ( )
55+ . UseUtc ( )
5656 . RuleFor ( u => u . Name , f => f . Commerce . ProductName ( ) )
5757 . RuleFor ( u => u . Mnemonic , f => f . Random . AlphaNumeric ( 5 ) )
5858 . RuleFor ( u => u . Quantity , f => f . Random . Decimal ( 1 , 100 ) )
@@ -65,6 +65,7 @@ public static void Initialize(IServiceProvider serviceProvider)
6565
6666 // Seed PriceGroups
6767 var priceGroupFaker = new Faker < PriceGroup > ( )
68+ . UseUtc ( )
6869 . RuleFor ( pg => pg . Name , f => f . Commerce . Department ( ) )
6970 . RuleFor ( pg => pg . Description , f => f . Lorem . Sentence ( ) )
7071 . RuleFor ( pg => pg . CreatedAt , f => f . Date . Past ( ) )
@@ -77,6 +78,7 @@ public static void Initialize(IServiceProvider serviceProvider)
7778
7879 // Seed Products
7980 var productFaker = new Faker < Product > ( )
81+ . UseUtc ( )
8082 . RuleFor ( p => p . Name , f => f . Commerce . ProductName ( ) )
8183 . RuleFor ( p => p . IsEnabled , f => f . Random . Bool ( ) )
8284 . RuleFor ( p => p . ShortDescription , f => f . Commerce . ProductDescription ( ) )
@@ -99,6 +101,7 @@ public static void Initialize(IServiceProvider serviceProvider)
99101
100102 // Seed ProductAddons
101103 var productAddonFaker = new Faker < ProductAddon > ( )
104+ . UseUtc ( )
102105 . RuleFor ( pa => pa . Name , f => f . Commerce . ProductName ( ) )
103106 . RuleFor ( pa => pa . IsEnabled , f => f . Random . Bool ( ) )
104107 . RuleFor ( pa => pa . ShortDescription , f => f . Commerce . ProductDescription ( ) )
@@ -122,6 +125,7 @@ public static void Initialize(IServiceProvider serviceProvider)
122125
123126 // Seed ProductBundles
124127 var productBundleFaker = new Faker < ProductBundle > ( )
128+ . UseUtc ( )
125129 . RuleFor ( pb => pb . Name , f => f . Commerce . ProductName ( ) )
126130 . RuleFor ( pb => pb . IsEnabled , f => f . Random . Bool ( ) )
127131 . RuleFor ( pb => pb . ShortDescription , f => f . Commerce . ProductDescription ( ) )
@@ -142,6 +146,7 @@ public static void Initialize(IServiceProvider serviceProvider)
142146
143147 // Seed ProductGroups
144148 var productGroupFaker = new Faker < ProductGroup > ( )
149+ . UseUtc ( )
145150 . RuleFor ( pg => pg . Name , f => f . Commerce . ProductName ( ) )
146151 . RuleFor ( pg => pg . IsEnabled , f => f . Random . Bool ( ) )
147152 . RuleFor ( pg => pg . ShortDescription , f => f . Commerce . ProductDescription ( ) )
@@ -165,4 +170,14 @@ public static void Initialize(IServiceProvider serviceProvider)
165170 context . SaveChanges ( ) ;
166171 }
167172 }
173+
174+ private static Faker < T > UseUtc < T > ( this Faker < T > faker )
175+ where T : class
176+ {
177+ // Setting the system DateTime to kind Utc, so that faker calls like PastOffset() don't depend on the system time zone.
178+ // See https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.op_implicit?view=net-6.0#remarks
179+ faker . UseDateTimeReference ( DateTime . UtcNow ) ;
180+
181+ return faker ;
182+ }
168183}
0 commit comments