94 lines
3.2 KiB
C#
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);
|
|
}
|
|
}
|