using System.Linq; using Soneta.Business; using Soneta.Kadry; using Soneta.Kalend; using Soneta.Place; using Soneta.Test; using Soneta.Types; using Prac = Soneta.Kadry.Pracownik; namespace Soneta.Skills.Test.KadryPlace.Pracownik; /// /// Wspólna baza testów domeny Kadry/Płace (pracownik, etat, nieobecności, kalendarz, umowy, wypłaty). /// Dziedziczy z , dzięki czemu: /// /// udostępnia gotową sesję operacyjną (Session) powiązaną z testową bazą Demo (GoldStandard), /// automatycznie wycofuje (rollback) wszystkie zmiany w bazie po zakończeniu testu, /// daje metody pomocnicze InTransaction/SaveDispose do pracy w transakcjach. /// /// Baza dodaje skróty często powtarzane w testach kadrowo-płacowych: dostęp do modułów /// (Kadry, Płace, Kalendarz) oraz pobieranie pracowników z bazy Demo po kodzie/nazwisku. /// /// Cała baza operuje wyłącznie na publicznym kontrakcie platformy Soneta — tak jak dodatek /// programisty zewnętrznego, który nie ma dostępu do kodu źródłowego aplikacji. /// /// public abstract class PracownikTestBase : TestBase { // === Moduły bieżącej sesji operacyjnej === /// Moduł Kadry — kartoteka pracowników (Pracownicy), historia kadrowa, etaty, umowy. protected KadryModule Kadry => Session.GetKadry(); /// Moduł Płace — wypłaty, listy płac, elementy wynagrodzenia, definicje elementów. protected PlaceModule Place => Session.GetPlace(); /// Moduł Kalendarz — nieobecności, kalendarze, plan pracy, dni pracy, RCP, limity. protected KalendModule Kalend => Session.GetKalend(); // === Kody pracowników dostępnych w bazie Demo (GoldStandard) === // Baza Demo zawiera ~80 zatrudnionych pracowników etatowych (po jednym zapisie historii każdy). // Kody są stabilne między uruchomieniami — używamy ich jako punktów wejścia do scenariuszy odczytu. /// Kody przykładowych pracowników etatowych z bazy Demo (pole Pracownik.Kod). protected static class Pracownik_ { public const string Andrzejewski = "006"; public const string Bednarek = "007"; public const string Bujak = "008"; public const string Strzelecki = "009"; } // === Wyszukiwanie pracowników (publiczne API) === /// Pobiera pracownika po kodzie (klucz unikalny WgKodu, case-insensitive) albo null. protected Prac Pracownik(string kod) => Kadry.Pracownicy.WgKodu[kod]; /// Pierwszy pracownik wg kodu — wygodny, deterministyczny punkt startu dla testów odczytu. protected Prac PierwszyPracownik() => Kadry.Pracownicy.WgKodu.Cast().First(); }