using System; using Soneta.Core; using Soneta.CRM; using Soneta.Test; namespace Soneta.Skills.Test.CRM.Kontrahenci; /// /// Wspólna baza testów kontrahenta. Dziedziczy z , dzięki czemu: /// /// udostępnia gotową sesję operacyjną (Session) powiązaną z testową bazą Demo, /// 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 kontrahenta (dostęp do modułu CRM, /// generowanie unikalnego kodu, utworzenie minimalnego kontrahenta). /// public abstract class KontrahentTestBase : TestBase { /// Moduł CRM bieżącej sesji operacyjnej. protected CRMModule Crm => Session.GetCRM(); /// Generuje krótki, unikalny kod kontrahenta (na potrzeby testów). protected static string UnikalnyKod() => Guid.NewGuid().ToString("N").Substring(0, 10); /// /// Tworzy w bieżącej sesji nowego kontrahenta z minimalnym kompletem danych /// (kod, nazwa, status i rodzaj podmiotu) wewnątrz transakcji edycyjnej. /// Zwrócony obiekt żyje w bieżącej sesji — pozostaje ważny do czasu SaveDispose. /// protected Kontrahent UtworzKontrahenta( string kod, string nazwa = null, StatusPodmiotu status = StatusPodmiotu.PodmiotGospodarczy, RodzajPodmiotu rodzaj = RodzajPodmiotu.Krajowy) { Kontrahent k = null; InTransaction(() => { // AddRow MUSI poprzedzać ustawianie pól — obiekt najpierw trafia do tabeli. k = new Kontrahent(); Session.AddRow(k); k.Kod = kod; k.Nazwa = nazwa ?? kod; k.StatusPodmiotu = status; k.RodzajPodmiotu = rodzaj; }); return k; } }