556f1d376b | ||
---|---|---|
.github | ||
src | ||
.gitignore | ||
license.txt | ||
readme.md | ||
readme.source.md |
readme.md
Verify.EntityFramework
Extends Verify to allow verification of EntityFramework bits.
Support is available via a Tidelift Subscription.
Contents
NuGet package
- https://nuget.org/packages/Verify.EntityFramework/
- https://nuget.org/packages/Verify.EntityFrameworkClassic/
Usage
Enable VerifyEntityFramewok once at assembly load time:
VerifyEntityFramework.Enable();
VerifyEntityFrameworkClassic.Enable();
ChangeTracking
Added, deleted, and Modified entities can be verified by performing changes on a DbContext and then verifying that context. This approach leverages the EntityFramework ChangeTracker.
Added entity
This test:
[Fact]
public async Task Added()
{
var options = DbContextOptions();
await using var context = new SampleDbContext(options);
context.Add(new Company {Content = "before"});
await Verify(context);
}
Will result in the following verified file:
{
Added: {
Company: {
Id: 0,
Content: 'before'
}
}
}
{
Added: {
Company: {
Id: 0,
Content: 'before'
}
}
}
Deleted entity
This test:
[Fact]
public async Task Deleted()
{
var options = DbContextOptions();
await using var context = new SampleDbContext(options);
context.Add(new Company {Content = "before"});
context.SaveChanges();
var company = context.Companies.Single();
context.Companies.Remove(company);
await Verify(context);
}
Will result in the following verified file:
{
Deleted: {
Company: {
Id: 0
}
}
}
{
Deleted: {
Company: {
Id: 0
}
}
}
Modified entity
This test:
[Fact]
public async Task Modified()
{
var options = DbContextOptions();
await using var context = new SampleDbContext(options);
var company = new Company {Content = "before"};
context.Add(company);
context.SaveChanges();
context.Companies.Single().Content = "after";
await Verify(context);
}
Will result in the following verified file:
{
Modified: {
Company: {
Id: 0,
Content: {
Original: 'before',
Current: 'after'
}
}
}
}
{
Modified: {
Company: {
Id: 0,
Content: {
Original: 'before',
Current: 'after'
}
}
}
}
Queryable
This test:
[Fact]
public async Task Queryable()
{
var database = await DbContextBuilder.GetDatabase("Queryable");
var dbContext = database.Context;
var queryable = dbContext.Companies.Where(x => x.Content == "value");
await Verify(queryable);
}
Will result in the following verified file:
SELECT [c].[Id], [c].[Content]
FROM [Companies] AS [c]
WHERE [c].[Content] = N'value'
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Content] AS [Content]
FROM [dbo].[Companies] AS [Extent1]
WHERE N'value' = [Extent1].[Content]
Security contact information
To report a security vulnerability, use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.
Icon
Database designed by Creative Stall from The Noun Project.