1- import { render , screen , renderHook } from '@testing-library/react' ;
1+ import { render , screen } from '@testing-library/react' ;
22
33import {
44 endOfTomorrow ,
@@ -15,7 +15,7 @@ import * as GetEventEnrolmentStatus from '../../../utils/getEventEnrolmentStatus
1515import EventHero , {
1616 EnrolmentStatusInfo ,
1717 OfferButton ,
18- useIsEnrolmentOpen ,
18+ getIsEnrolmentOpen ,
1919} from '../EventHero' ;
2020
2121vi . mock ( 'react-helsinki-headless-cms' , async ( importOriginal ) => ( {
@@ -89,22 +89,20 @@ afterAll(() => {
8989 vi . restoreAllMocks ( ) ;
9090} ) ;
9191
92- describe ( 'useIsEnrolmentOpen ' , ( ) => {
92+ describe ( 'getIsEnrolmentOpen ' , ( ) => {
9393 it ( 'should return false if event is not defined' , ( ) => {
94- const { result } = renderHook ( ( ) => useIsEnrolmentOpen ( undefined ) ) ;
95- expect ( result . current ) . toBe ( false ) ;
94+ const result = getIsEnrolmentOpen ( undefined ) ;
95+ expect ( result ) . toBe ( false ) ;
9696 } ) ;
9797
9898 it ( 'should return false if registration is not defined' , ( ) => {
99- const { result } = renderHook ( ( ) =>
100- useIsEnrolmentOpen ( {
101- ...baseEvent ,
102- registration : undefined ,
103- enrolmentEndTime : undefined ,
104- enrolmentStartTime : undefined ,
105- } )
106- ) ;
107- expect ( result . current ) . toBe ( false ) ;
99+ const result = getIsEnrolmentOpen ( {
100+ ...baseEvent ,
101+ registration : undefined ,
102+ enrolmentEndTime : undefined ,
103+ enrolmentStartTime : undefined ,
104+ } ) ;
105+ expect ( result ) . toBe ( false ) ;
108106 } ) ;
109107
110108 it ( 'should return true if remainingAttendeeCapacity is greater than 0' , ( ) => {
@@ -116,8 +114,8 @@ describe('useIsEnrolmentOpen', () => {
116114 remainingAttendeeCapacity : 10 ,
117115 } ,
118116 } ;
119- const { result } = renderHook ( ( ) => useIsEnrolmentOpen ( event ) ) ;
120- expect ( result . current ) . toBe ( true ) ;
117+ const result = getIsEnrolmentOpen ( event ) ;
118+ expect ( result ) . toBe ( true ) ;
121119 } ) ;
122120
123121 it ( 'should return true event with waiting list capacity and remainingWaitingListCapacity is greater than 0' , ( ) => {
@@ -129,8 +127,8 @@ describe('useIsEnrolmentOpen', () => {
129127 remainingWaitingListCapacity : 5 ,
130128 } ,
131129 } ;
132- const { result } = renderHook ( ( ) => useIsEnrolmentOpen ( event ) ) ;
133- expect ( result . current ) . toBe ( true ) ;
130+ const result = getIsEnrolmentOpen ( event ) ;
131+ expect ( result ) . toBe ( true ) ;
134132 } ) ;
135133
136134 it ( 'should return true if event is queueable' , ( ) => {
@@ -145,8 +143,8 @@ describe('useIsEnrolmentOpen', () => {
145143 } ,
146144 } ;
147145
148- const { result } = renderHook ( ( ) => useIsEnrolmentOpen ( event ) ) ;
149- expect ( result . current ) . toBe ( true ) ;
146+ const result = getIsEnrolmentOpen ( event ) ;
147+ expect ( result ) . toBe ( true ) ;
150148 } ) ;
151149
152150 it ( 'should return false if both remaining capacities are 0' , ( ) => {
@@ -158,8 +156,8 @@ describe('useIsEnrolmentOpen', () => {
158156 remainingWaitingListCapacity : 0 ,
159157 } ,
160158 } ;
161- const { result } = renderHook ( ( ) => useIsEnrolmentOpen ( event ) ) ;
162- expect ( result . current ) . toBe ( false ) ;
159+ const result = getIsEnrolmentOpen ( event ) ;
160+ expect ( result ) . toBe ( false ) ;
163161 } ) ;
164162
165163 it . each ( [
@@ -176,10 +174,13 @@ describe('useIsEnrolmentOpen', () => {
176174 remainingAttendeeCapacity : 10 ,
177175 } ,
178176 } ;
179- const { result } = renderHook ( ( ) =>
180- useIsEnrolmentOpen ( event , undefined , enrolmentFormAvailableBeforeHand )
177+ const result = getIsEnrolmentOpen (
178+ event ,
179+ undefined ,
180+ enrolmentFormAvailableBeforeHand
181181 ) ;
182- expect ( result . current ) . toBe ( expectedResult ) ;
182+
183+ expect ( result ) . toBe ( expectedResult ) ;
183184 }
184185 ) ;
185186
@@ -245,7 +246,31 @@ describe('OfferButton', () => {
245246 ) . toBeInTheDocument ( ) ;
246247 } ) ;
247248
248- it ( 'should not render if offerInfoUrl exists but enrolment is not open' , ( ) => {
249+ it ( 'should render when offerInfoUrl exists and enrolment time is not given' , ( ) => {
250+ const eventWithClosedEnrolment : EventFields = {
251+ ...baseEvent ,
252+ offers : [
253+ { isFree : false , price : null , infoUrl : { fi : 'https://hel.fi' } } ,
254+ ] ,
255+ registration : {
256+ ...baseEvent . registration ,
257+ remainingAttendeeCapacity : 0 ,
258+ waitingListCapacity : 0 ,
259+ remainingWaitingListCapacity : 0 ,
260+ } ,
261+ enrolmentStartTime : undefined ,
262+ } ;
263+
264+ const { container } = render (
265+ < OfferButton event = { eventWithClosedEnrolment } />
266+ ) ;
267+ expect ( container ) . not . toBeEmptyDOMElement ( ) ;
268+ expect (
269+ screen . getByRole ( 'button' , { name : 'hero.ariaLabelEnrol' } )
270+ ) . toBeInTheDocument ( ) ;
271+ } ) ;
272+
273+ it ( 'should not render if offerInfoUrl exists, enrolment time is given, but enrolment is not open' , ( ) => {
249274 const eventWithClosedEnrolment : EventFields = {
250275 ...baseEvent ,
251276 offers : [
@@ -257,6 +282,7 @@ describe('OfferButton', () => {
257282 waitingListCapacity : 0 ,
258283 remainingWaitingListCapacity : 0 ,
259284 } ,
285+ enrolmentStartTime : startOfYesterday ( ) . toISOString ( ) ,
260286 } ;
261287
262288 const { container } = render (
0 commit comments