Skip to content

Commit ca02164

Browse files
committed
Added aditional test for accepting DbContext arguments
1 parent 4e02174 commit ca02164

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

test/EntityFrameworkCore.Triggered.Tests/Internal/TriggerFactoryTests.cs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ public SampleTrigger2(TriggerFactory triggerFactory)
3535
public Task BeforeSave(ITriggerContext<object> context, CancellationToken cancellationToken) => throw new NotImplementedException();
3636
}
3737

38-
class SampleTrigger3 : IBeforeSaveTrigger<object>
38+
class SampleTrigger3<TDbContext> : IBeforeSaveTrigger<object>
39+
where TDbContext : DbContext
3940
{
40-
public SampleTrigger3(SampleDbContext3 dbContext)
41+
public SampleTrigger3(TDbContext dbContext)
4142
{
4243
DbContext = dbContext;
4344
}
4445

45-
public SampleDbContext3 DbContext { get; }
46+
public TDbContext DbContext { get; }
4647

4748
public Task BeforeSave(ITriggerContext<object> context, CancellationToken cancellationToken) => throw new NotImplementedException();
4849
}
@@ -53,7 +54,11 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
5354
{
5455
optionsBuilder
5556
.UseInMemoryDatabase(nameof(SampleDbContext3))
56-
.UseTriggers(triggerOptions => triggerOptions.AddTrigger<SampleTrigger3>());
57+
.UseTriggers(triggerOptions =>
58+
triggerOptions
59+
.AddTrigger<SampleTrigger3<SampleDbContext3>>()
60+
.AddTrigger<SampleTrigger3<DbContext>>()
61+
);
5762
optionsBuilder.ConfigureWarnings(warningOptions => {
5863
warningOptions.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning);
5964
});
@@ -113,15 +118,29 @@ public void Resolve_FromInternalServices_GetsConstructedUsingExternalServiceProv
113118
}
114119

115120
[Fact]
116-
public void Resolve_FromHybridServices_GetsPasedTheDbContext()
121+
public void Resolve_FromHybridServices_GetsPasedTheConcreteDbContext()
117122
{
118123
using var dbContext = new SampleDbContext3();
119124
var factory = dbContext.GetService<TriggerFactory>();
120125
var serviceProvider = new HybridServiceProvider(dbContext.GetInfrastructure(), dbContext);
121126

122-
var trigger = factory.Resolve(serviceProvider, typeof(IBeforeSaveTrigger<object>)).FirstOrDefault() as SampleTrigger3;
127+
var trigger = factory.Resolve(serviceProvider, typeof(IBeforeSaveTrigger<object>)).FirstOrDefault() as SampleTrigger3<SampleDbContext3>;
123128

124129
Assert.NotNull(trigger);
130+
Assert.Equal(dbContext, trigger.DbContext);
131+
}
132+
133+
[Fact]
134+
public void Resolve_FromHybridServices_GetsPasedTheAbstractDbContext()
135+
{
136+
using var dbContext = new SampleDbContext3();
137+
var factory = dbContext.GetService<TriggerFactory>();
138+
var serviceProvider = new HybridServiceProvider(dbContext.GetInfrastructure(), dbContext);
139+
140+
var trigger = factory.Resolve(serviceProvider, typeof(IBeforeSaveTrigger<object>)).LastOrDefault() as SampleTrigger3<DbContext>;
141+
142+
Assert.NotNull(trigger);
143+
Assert.Equal(dbContext, trigger.DbContext);
125144
}
126145
}
127146
}

0 commit comments

Comments
 (0)