Files
Musify/backend/Tests/Musify.Api.Tests/Validators/TrackRequestValidatorTests.cs
T
2026-09-24 13:24:43 +02:00

50 lines
1.6 KiB
C#

using Musify.Api.DataTransferObjects.Tracks;
using Musify.Api.Validators.Tracks;
using Musify.Domain.ValueObjects;
using Xunit;
namespace Musify.Api.Tests.Validators
{
public sealed class TrackRequestValidatorTests
{
[Fact]
public void CreateTrack_ValidRequest_Passes()
{
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Pop, Genre.Rock]);
Assert.True(new CreateTrackRequestValidator().Validate(request).IsValid);
}
[Fact]
public void CreateTrack_NoTags_Fails()
{
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), []);
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
}
[Fact]
public void CreateTrack_IncompatibleTags_Fails()
{
var request = new CreateTrackRequest("Song", Guid.NewGuid(), Guid.NewGuid(), [Genre.Classical, Genre.Metal]);
Assert.False(new CreateTrackRequestValidator().Validate(request).IsValid);
}
[Theory]
[InlineData(-1)]
[InlineData(double.NaN)]
[InlineData(double.PositiveInfinity)]
public void RecordListeningProgress_InvalidSeconds_Fails(double seconds)
{
Assert.False(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(seconds)).IsValid);
}
[Fact]
public void RecordListeningProgress_ZeroSeconds_Passes()
{
Assert.True(new RecordListeningProgressRequestValidator().Validate(new RecordListeningProgressRequest(0)).IsValid);
}
}
}