@@ -117,4 +117,282 @@ public function setLecturerSetsLecturer(): void
117117 $ this ->eventDate ->getLecturer ()
118118 );
119119 }
120+
121+ #[Test]
122+ public function isBookableReturnsInitialValueForBookable (): void
123+ {
124+ self ::assertFalse (
125+ $ this ->eventDate ->isBookable ()
126+ );
127+ }
128+
129+ #[Test]
130+ public function setBookableSetsBookable (): void
131+ {
132+ $ this ->eventDate ->setBookable (true );
133+
134+ self ::assertTrue (
135+ $ this ->eventDate ->isBookable ()
136+ );
137+ }
138+
139+ #[Test]
140+ public function isPriceCategorizedReturnsInitialValueForPriceCategorized (): void
141+ {
142+ self ::assertFalse (
143+ $ this ->eventDate ->isPriceCategorized ()
144+ );
145+ }
146+
147+ #[Test]
148+ public function setPriceCategorizedSetsPriceCategorized (): void
149+ {
150+ $ this ->eventDate ->setPriceCategorized (true );
151+
152+ self ::assertTrue (
153+ $ this ->eventDate ->isPriceCategorized ()
154+ );
155+ }
156+
157+ #[Test]
158+ public function isHandleSeatsReturnsInitialValueForHandleSeats (): void
159+ {
160+ self ::assertFalse (
161+ $ this ->eventDate ->isHandleSeats ()
162+ );
163+ }
164+
165+ #[Test]
166+ public function setHandleSeatsSetsHandleSeats (): void
167+ {
168+ $ this ->eventDate ->setHandleSeats (true );
169+
170+ self ::assertTrue (
171+ $ this ->eventDate ->isHandleSeats ()
172+ );
173+ }
174+
175+ #[Test]
176+ public function isHandleSeatsInPriceCategoryReturnsInitialValueForHandleSeatsInPriceCategory (): void
177+ {
178+ self ::assertFalse (
179+ $ this ->eventDate ->isHandleSeatsInPriceCategory ()
180+ );
181+ }
182+
183+ #[Test]
184+ public function setHandleSeatsInPriceCategorySetsHandleSeatsInPriceCategory (): void
185+ {
186+ $ this ->eventDate ->setHandleSeatsInPriceCategory (true );
187+
188+ self ::assertTrue (
189+ $ this ->eventDate ->isHandleSeatsInPriceCategory ()
190+ );
191+ }
192+
193+ #[Test]
194+ public function getSeatsNumberReturnsZeroIfHandleSeatsIsFalse ()
195+ {
196+ self ::assertSame (
197+ 0 ,
198+ $ this ->eventDate ->getSeatsNumber ()
199+ );
200+
201+ $ this ->eventDate ->setSeatsNumber (15 );
202+
203+ self ::assertSame (
204+ 0 ,
205+ $ this ->eventDate ->getSeatsNumber ()
206+ );
207+ }
208+
209+ #[Test]
210+ public function getSeatsNumberReturnsInitialValueForSeatsNumberIfHandleSeatsIsTrue ()
211+ {
212+ $ this ->eventDate ->setHandleSeats (true );
213+
214+ self ::assertSame (
215+ 0 ,
216+ $ this ->eventDate ->getSeatsNumber ()
217+ );
218+ }
219+
220+ #[Test]
221+ public function setSeatsNumberSetsSeatsNumber ()
222+ {
223+ $ this ->eventDate ->setSeatsNumber (15 );
224+
225+ self ::assertSame (
226+ 0 ,
227+ $ this ->eventDate ->getSeatsNumber ()
228+ );
229+
230+ $ this ->eventDate ->setHandleSeats (true );
231+
232+ self ::assertSame (
233+ 15 ,
234+ $ this ->eventDate ->getSeatsNumber ()
235+ );
236+ }
237+
238+ #[Test]
239+ public function getSeatsTakenReturnsZeroIfHandleSeatsIsFalse ()
240+ {
241+ self ::assertSame (
242+ 0 ,
243+ $ this ->eventDate ->getSeatsTaken ()
244+ );
245+
246+ $ this ->eventDate ->setSeatsTaken (15 );
247+
248+ self ::assertSame (
249+ 0 ,
250+ $ this ->eventDate ->getSeatsTaken ()
251+ );
252+ }
253+
254+ #[Test]
255+ public function getSeatsTakenReturnsInitialValueForSeatsTakenIfHandleSeatsIsTrue ()
256+ {
257+ $ this ->eventDate ->setHandleSeats (true );
258+
259+ self ::assertSame (
260+ 0 ,
261+ $ this ->eventDate ->getSeatsTaken ()
262+ );
263+ }
264+
265+ #[Test]
266+ public function setSeatsTakenSetsSeatsTaken ()
267+ {
268+ $ this ->eventDate ->setSeatsTaken (15 );
269+
270+ self ::assertSame (
271+ 0 ,
272+ $ this ->eventDate ->getSeatsTaken ()
273+ );
274+
275+ $ this ->eventDate ->setHandleSeats (true );
276+
277+ self ::assertSame (
278+ 15 ,
279+ $ this ->eventDate ->getSeatsTaken ()
280+ );
281+ }
282+
283+ #[Test]
284+ public function getSeatsAvailableReturnsZeroIfHandleSeatsIsFalse ()
285+ {
286+ self ::assertSame (
287+ 0 ,
288+ $ this ->eventDate ->getSeatsAvailable ()
289+ );
290+
291+ $ this ->eventDate ->setSeatsNumber (15 );
292+
293+ self ::assertSame (
294+ 0 ,
295+ $ this ->eventDate ->getSeatsAvailable ()
296+ );
297+ }
298+
299+ #[Test]
300+ public function getSeatsAvailableReturnsDifferenceOfInitialValueForSeatsNumberAndSeatsTakenIfHandleSeatsIsTrue ()
301+ {
302+ $ this ->eventDate ->setHandleSeats (true );
303+
304+ self ::assertSame (
305+ 0 ,
306+ $ this ->eventDate ->getSeatsAvailable ()
307+ );
308+ }
309+
310+ #[Test]
311+ public function getSeatsAvailableDifferenceOfValueForSeatsNumberAndSeatsTakenIfHandleSeatsIsTrue ()
312+ {
313+ $ this ->eventDate ->setSeatsNumber (30 );
314+ $ this ->eventDate ->setSeatsTaken (13 );
315+
316+ self ::assertSame (
317+ 0 ,
318+ $ this ->eventDate ->getSeatsAvailable ()
319+ );
320+
321+ $ this ->eventDate ->setHandleSeats (true );
322+
323+ self ::assertSame (
324+ 17 ,
325+ $ this ->eventDate ->getSeatsAvailable ()
326+ );
327+ }
328+
329+ #[TEST ]
330+ public function isAvailableReturnsFalseIfBookableIsFalse ()
331+ {
332+ $ this ->eventDate ->setHandleSeats (true );
333+ $ this ->eventDate ->setSeatsNumber (20 );
334+ $ this ->eventDate ->setBookable (false );
335+
336+ self ::assertFalse (
337+ $ this ->eventDate ->isAvailable ()
338+ );
339+
340+ $ this ->eventDate ->setBookable (true );
341+
342+ self ::assertTrue (
343+ $ this ->eventDate ->isAvailable ()
344+ );
345+ }
346+
347+ #[TEST ]
348+ public function isAvailableReturnsTrueIfIsBookableAndHandleSeatsIsFalse ()
349+ {
350+ $ this ->eventDate ->setBookable (true );
351+ $ this ->eventDate ->setHandleSeats (false );
352+ self ::assertTrue (
353+ $ this ->eventDate ->isAvailable ()
354+ );
355+
356+ $ this ->eventDate ->setHandleSeats (true );
357+ self ::assertFalse (
358+ $ this ->eventDate ->isAvailable ()
359+ );
360+ }
361+
362+ #[TEST ]
363+ public function isAvailableReturnsTrueIfIsBookableAndHandleSeatsIsTrueAndNumberOfSeatsIsGreaterThanZero ()
364+ {
365+ $ this ->eventDate ->setBookable (true );
366+ $ this ->eventDate ->setHandleSeats (true );
367+ $ this ->eventDate ->setSeatsNumber (2 );
368+ self ::assertTrue (
369+ $ this ->eventDate ->isAvailable ()
370+ );
371+
372+ $ this ->eventDate ->setSeatsTaken (1 );
373+ self ::assertTrue (
374+ $ this ->eventDate ->isAvailable ()
375+ );
376+
377+ $ this ->eventDate ->setSeatsTaken (2 );
378+ self ::assertFalse (
379+ $ this ->eventDate ->isAvailable ()
380+ );
381+ }
382+
383+ #[TEST ]
384+ public function isAvailableReturnsFalseIfIsBookableAndHandleSeatsIsTrueAndNumberOfSeatsIsLowerOrEqualToZero ()
385+ {
386+ $ this ->eventDate ->setBookable (true );
387+ $ this ->eventDate ->setHandleSeats (true );
388+ $ this ->eventDate ->setSeatsNumber (0 );
389+ self ::assertFalse (
390+ $ this ->eventDate ->isAvailable ()
391+ );
392+
393+ $ this ->eventDate ->setSeatsTaken (1 );
394+ self ::assertFalse (
395+ $ this ->eventDate ->isAvailable ()
396+ );
397+ }
120398}
0 commit comments