Verify.EntityFramework/readme.md

6.3 KiB

Verify.EntityFramework

Build status NuGet Status

Extends Verify to allow verification of EntityFramework bits.

Contents

NuGet package

https://nuget.org/packages/Verify.EntityFramework/

Usage

Enable VerifyEntityFramewok once at assembly load time:

VerifyEntityFramework.Enable();

snippet source | anchor

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);
}

snippet source | anchor

Will result in the following verified file:

{
  Added: {
    Company: {
      Id: 0,
      Content: 'before'
    }
  }
}

snippet source | anchor

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();
    }

    await using (var context = new SampleDbContext(options))
    {
        var company = context.Companies.Single();
        context.Companies.Remove(company);
        await Verify(context);
    }
}

snippet source | anchor

Will result in the following verified file:

{
  Deleted: {
    Company: {
      Id: 0
    }
  }
}

snippet source | anchor

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);
}

snippet source | anchor

Will result in the following verified file:

{
  Modified: {
    Company: {
      Id: 0,
      Content: {
        Original: 'before',
        Current: 'after'
      }
    }
  }
}

snippet source | anchor

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);
}

snippet source | anchor

Will result in the following verified file:

SELECT [c].[Id], [c].[Content]
FROM [Companies] AS [c]
WHERE [c].[Content] = N'value'

snippet source | anchor

Icon

Database designed by Creative Stall from The Noun Project.