updated tests, added Testcontainers, added ApplicationDbContext
This commit is contained in:
parent
e1cab9b53f
commit
2c44951e13
68
Wave.Tests/Data/ApplicationDbContextTest.cs
Normal file
68
Wave.Tests/Data/ApplicationDbContextTest.cs
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Testcontainers.PostgreSql;
|
||||||
|
using Wave.Data;
|
||||||
|
|
||||||
|
namespace Wave.Tests.Data;
|
||||||
|
|
||||||
|
[TestFixture, FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
|
||||||
|
[TestOf(typeof(ApplicationDbContext))]
|
||||||
|
public class ApplicationDbContextTest {
|
||||||
|
private PostgreSqlContainer PostgresContainer { get; } = new PostgreSqlBuilder().WithImage("postgres:16.1-alpine").Build();
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public async Task SetUp() {
|
||||||
|
await PostgresContainer.StartAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
[TearDown]
|
||||||
|
public async Task TearDown() {
|
||||||
|
await PostgresContainer.DisposeAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApplicationDbContext GetContext() {
|
||||||
|
return new ApplicationDbContext(
|
||||||
|
new DbContextOptionsBuilder<ApplicationDbContext>()
|
||||||
|
.UseNpgsql(PostgresContainer.GetConnectionString())
|
||||||
|
.EnableSensitiveDataLogging()
|
||||||
|
.EnableDetailedErrors()
|
||||||
|
.EnableThreadSafetyChecks()
|
||||||
|
.Options);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task Migration() {
|
||||||
|
await using var context = GetContext();
|
||||||
|
Assert.DoesNotThrowAsync(() => context.Database.MigrateAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task CreateArticle() {
|
||||||
|
await using var context = GetContext();
|
||||||
|
await context.Database.EnsureCreatedAsync();
|
||||||
|
|
||||||
|
var author = new ApplicationUser {
|
||||||
|
FullName = "Test User"
|
||||||
|
};
|
||||||
|
Article article = new() {
|
||||||
|
Title = "Testing Article",
|
||||||
|
Body = "This is a *test* Article",
|
||||||
|
Author = author
|
||||||
|
};
|
||||||
|
article.UpdateSlug(null);
|
||||||
|
article.UpdateBody();
|
||||||
|
|
||||||
|
await context.AddAsync(article);
|
||||||
|
Assert.DoesNotThrowAsync(() => context.SaveChangesAsync());
|
||||||
|
|
||||||
|
var dbArticle = await context.Set<Article>()
|
||||||
|
.IgnoreQueryFilters().FirstOrDefaultAsync();
|
||||||
|
Assert.That(dbArticle, Is.Not.Null);
|
||||||
|
|
||||||
|
Assert.That(dbArticle.Title, Is.EqualTo("Testing Article"));
|
||||||
|
Assert.That(dbArticle.Slug, Is.EqualTo("testing-article"));
|
||||||
|
|
||||||
|
Assert.That(dbArticle.Body, Is.EqualTo("This is a *test* Article"));
|
||||||
|
Assert.That(dbArticle.BodyPlain, Is.EqualTo("This is a test Article"));
|
||||||
|
Assert.That(dbArticle.BodyHtml, Is.EqualTo("<p>This is a <em>test</em> Article</p>"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,11 +10,20 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
<PackageReference Include="coverlet.collector" Version="6.0.2">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
|
||||||
|
<PackageReference Include="NUnit" Version="4.1.0" />
|
||||||
|
<PackageReference Include="NUnit.Analyzers" Version="4.2.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
|
<PackageReference Include="Testcontainers" Version="3.8.0" />
|
||||||
|
<PackageReference Include="Testcontainers.PostgreSql" Version="3.8.0" />
|
||||||
|
<PackageReference Include="Testcontainers.Redis" Version="3.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
Loading…
Reference in a new issue