using SameBeat.Domain.Encje; using SameBeat.Domain.Wyjatki; using Xunit; namespace SameBeat.Tests.Unit; public class UtworTests { [Fact] public void Utworz_PoprawneDane_TworzyUtwor() { var utwor = Utwor.Utworz("Tytul", "Wykonawca", "https://przyklad.pl/plik.mp3", 180_000); Assert.Equal("Tytul", utwor.Tytul); Assert.Equal("Wykonawca", utwor.Wykonawca); Assert.Equal("https://przyklad.pl/plik.mp3", utwor.Url); Assert.Equal(180_000, utwor.CzasTrwaniaMs); } [Fact] public void Utworz_BezWykonawcy_DopuszczaNull() { var utwor = Utwor.Utworz("Tytul", null, "https://przyklad.pl/plik.mp3", 1000); Assert.Null(utwor.Wykonawca); } [Theory] [InlineData("")] [InlineData(" ")] public void Utworz_PustyTytul_Rzuca(string tytul) { Assert.Throws(() => Utwor.Utworz(tytul, null, "https://przyklad.pl/plik.mp3", 1000)); } [Theory] [InlineData("")] [InlineData("nie-jest-to-adres-url")] [InlineData("/wzgledna/sciezka.mp3")] public void Utworz_NiepoprawnyUrl_Rzuca(string url) { Assert.Throws(() => Utwor.Utworz("Tytul", null, url, 1000)); } [Theory] [InlineData(0)] [InlineData(-1)] public void Utworz_NiedodatniCzasTrwania_Rzuca(int czasTrwaniaMs) { Assert.Throws(() => Utwor.Utworz("Tytul", null, "https://przyklad.pl/plik.mp3", czasTrwaniaMs)); } }