using SameBeat.Domain.Encje; using SameBeat.Domain.Enumy; using SameBeat.Domain.Wyjatki; using Xunit; namespace SameBeat.Tests.Unit; public class UczestnikOczekujacyTests { private static readonly Guid WydarzenieId = Guid.NewGuid(); [Fact] public void Dolacz_ZPoprawnymNickiem_UstawiaStatusOczekuje() { var uczestnik = UczestnikOczekujacy.Dolacz(WydarzenieId, "Piotr"); Assert.Equal(StatusUczestnikaOczekujacego.Oczekuje, uczestnik.Status); Assert.Equal("Piotr", uczestnik.Nick); Assert.Equal(WydarzenieId, uczestnik.WydarzenieId); } [Fact] public void Dolacz_GenerujeTozsamoscLiveKitServerowo() { var uczestnik = UczestnikOczekujacy.Dolacz(WydarzenieId, "Piotr"); Assert.StartsWith("uczestnik-", uczestnik.LiveKitIdentity); // Kazde dolaczenie ma inna tozsamosc -- nie da sie jej przewidziec ani wymusic z klienta. var drugi = UczestnikOczekujacy.Dolacz(WydarzenieId, "Piotr"); Assert.NotEqual(uczestnik.LiveKitIdentity, drugi.LiveKitIdentity); } [Theory] [InlineData("")] [InlineData(" ")] public void Dolacz_ZPustymNickiem_RzucaWyjatekDomenowy(string nick) { Assert.Throws(() => UczestnikOczekujacy.Dolacz(WydarzenieId, nick)); } [Fact] public void Dolacz_ZeZnakamiKatowymiWNicku_RzucaWyjatekDomenowy() { Assert.Throws(() => UczestnikOczekujacy.Dolacz(WydarzenieId, "")); } [Fact] public void Dolacz_ZeZbytDlugimNickiem_RzucaWyjatekDomenowy() { var zaDlugiNick = new string('a', UczestnikOczekujacy.MaksymalnaDlugoscNicku + 1); Assert.Throws(() => UczestnikOczekujacy.Dolacz(WydarzenieId, zaDlugiNick)); } [Fact] public void Dolacz_BezWydarzenia_RzucaWyjatekDomenowy() { Assert.Throws(() => UczestnikOczekujacy.Dolacz(Guid.Empty, "Piotr")); } [Fact] public void Odrzuc_ZmieniaStatusNaOdrzucony() { var uczestnik = UczestnikOczekujacy.Dolacz(WydarzenieId, "Piotr"); uczestnik.Odrzuc(); Assert.Equal(StatusUczestnikaOczekujacego.Odrzucony, uczestnik.Status); } [Fact] public void Zbanuj_ZmieniaStatusNaZbanowany() { var uczestnik = UczestnikOczekujacy.Dolacz(WydarzenieId, "Piotr"); uczestnik.Zbanuj(); Assert.Equal(StatusUczestnikaOczekujacego.Zbanowany, uczestnik.Status); } }