/// unit tests for the Booking server unit ServBookTest; interface uses SysUtils, Classes, SynCommons, SynTests, mORMot, DomConferenceTypes, DomConferenceInterfaces, DomConferenceServices, InfraConferenceRepository, ServBookMain; type TTestBookingApplication = class(TSynTestCase) protected fSettings: TBookProcessSettings; fProcess: TBookProcess; published procedure RunService; procedure ApplicationTest; procedure ShutdownService; end; implementation { TTestBookingApplication } procedure TTestBookingApplication.RunService; begin fSettings := TBookProcessSettings.Create; fProcess := TBookProcess.Create(fSettings); end; procedure TTestBookingApplication.ApplicationTest; var a, b: TAttendee; days1, days2: TSessionDays; res: TRegisterAttendee; begin a := TAttendee.Create; b := TAttendee.Create; try days1 := TSessionDay.From([0, 1, 2]); res := fProcess.Booking.RegisterAttendee('abc', ' def', days1, a); if res = raAlreadyRegistered then // works only first time (blank DB) res := fProcess.Booking.RegisterAttendee(CardinalToHex(UnixTimeUTC), RandomIdentifier(10), days1, a); check(res = raSuccess); check(a.Name <> ''); check(length(a.FirstName) = 10); check(fProcess.Booking.SearchRegistration(a.Name, a.FirstName, days2, b) = srFound); check(a.Name = b.Name); check(a.RegistrationNumber = b.RegistrationNumber); check(DynArrayEquals(TypeInfo(TSessionDays), days1, days2)); finally a.Free; b.Free; ObjArrayClear(days1); ObjArrayClear(days2); end; end; procedure TTestBookingApplication.ShutdownService; begin FreeAndNil(fProcess); FreeAndNil(fSettings); end; initialization end.