43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using FluentAssertions;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Xunit;
|
|
|
|
namespace Musify.Application.Tests.Infrastructure;
|
|
|
|
public sealed class SchemaSmokeTests
|
|
{
|
|
[Fact]
|
|
public async Task Schema_creates_and_persists_all_core_entities()
|
|
{
|
|
await using var ctx = new SqliteTestContext();
|
|
|
|
var user = TestData.User();
|
|
ctx.Database.Users.Add(user);
|
|
ctx.Database.UploadIntents.Add(TestData.UploadIntent(user.Id));
|
|
ctx.Database.PlayLists.Add(TestData.PlayList(user.Id));
|
|
await ctx.Database.SaveChangesAsync(CancellationToken.None);
|
|
|
|
var verify = ctx.NewContext();
|
|
(await verify.Users.CountAsync()).Should().Be(1);
|
|
(await verify.UploadIntents.CountAsync()).Should().Be(1);
|
|
(await verify.PlayLists.CountAsync()).Should().Be(1);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Transactions_are_supported_under_sqlite()
|
|
{
|
|
await using var ctx = new SqliteTestContext();
|
|
var user = TestData.User();
|
|
|
|
await using (var tx = await ctx.Database.BeginTransactionAsync(
|
|
System.Data.IsolationLevel.Serializable, CancellationToken.None))
|
|
{
|
|
ctx.Database.Users.Add(user);
|
|
await ctx.Database.SaveChangesAsync(CancellationToken.None);
|
|
await tx.CommitAsync(CancellationToken.None);
|
|
}
|
|
|
|
(await ctx.NewContext().Users.CountAsync()).Should().Be(1);
|
|
}
|
|
}
|