Files
Musify/Tests/Musify.Application.Tests/Handlers/GetByIdQueryHandlerTests.cs
T
2026-05-29 13:49:44 +02:00

94 lines
3.2 KiB
C#

using Ardalis.Result;
using FluentAssertions;
using Musify.Application.PlayLists.Handlers;
using Musify.Application.PlayLists.Queries;
using Musify.Application.Tests.Infrastructure;
using Musify.Application.Tracks.Handlers;
using Musify.Application.Tracks.Queries;
using Musify.Application.Users.Handlers;
using Musify.Application.Users.Queries;
using Xunit;
namespace Musify.Application.Tests.Handlers;
public sealed class GetByIdQueryHandlerTests
{
[Fact]
public async Task GetTrackById_returns_track_when_found()
{
await using var ctx = new SqliteTestContext();
var track = TestData.Track(title: "Found");
ctx.Database.Tracks.Add(track);
await ctx.Database.SaveChangesAsync(CancellationToken.None);
var sut = new GetTrackByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetTrackByIdQuery(track.Id), CancellationToken.None);
result.IsSuccess.Should().BeTrue();
result.Value.Title.Should().Be("Found");
}
[Fact]
public async Task GetTrackById_returns_not_found_when_missing()
{
await using var ctx = new SqliteTestContext();
var sut = new GetTrackByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetTrackByIdQuery(Guid.NewGuid()), CancellationToken.None);
result.Status.Should().Be(ResultStatus.NotFound);
}
[Fact]
public async Task GetPlayListById_returns_playlist_when_found()
{
await using var ctx = new SqliteTestContext();
var playList = TestData.PlayList(Guid.NewGuid(), name: "MyList");
ctx.Database.PlayLists.Add(playList);
await ctx.Database.SaveChangesAsync(CancellationToken.None);
var sut = new GetPlayListByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetPlayListByIdQuery(playList.Id), CancellationToken.None);
result.IsSuccess.Should().BeTrue();
result.Value.Name.Should().Be("MyList");
}
[Fact]
public async Task GetPlayListById_returns_not_found_when_missing()
{
await using var ctx = new SqliteTestContext();
var sut = new GetPlayListByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetPlayListByIdQuery(Guid.NewGuid()), CancellationToken.None);
result.Status.Should().Be(ResultStatus.NotFound);
}
[Fact]
public async Task GetUserById_returns_user_when_found()
{
await using var ctx = new SqliteTestContext();
var user = TestData.User(name: "Carol");
ctx.Database.Users.Add(user);
await ctx.Database.SaveChangesAsync(CancellationToken.None);
var sut = new GetUserByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetUserByIdQuery(user.Id), CancellationToken.None);
result.IsSuccess.Should().BeTrue();
result.Value.Name.Should().Be("Carol");
}
[Fact]
public async Task GetUserById_returns_not_found_when_missing()
{
await using var ctx = new SqliteTestContext();
var sut = new GetUserByIdQueryHandler(ctx.Database);
var result = await sut.Handle(new GetUserByIdQuery(Guid.NewGuid()), CancellationToken.None);
result.Status.Should().Be(ResultStatus.NotFound);
}
}