@@ -256,6 +256,52 @@ describe("Calendar tests", () => {
256256 done ( ) ;
257257 } ) ;
258258
259+ it ( "Loads events and initializes them with pat-inject and pat-switch" , async ( done ) => {
260+ const el = document . querySelector ( ".pat-calendar" ) ;
261+ el . setAttribute (
262+ "data-pat-calendar" ,
263+ `initial-date: 2020-10-10;
264+ url: ./test.json;
265+ pat-inject-target: #event-info;
266+ pat-inject-source: #document-body;
267+ pat-switch-selector: #event-info;
268+ pat-switch-remove: event-info--inactive;
269+ pat-switch-add: event-info--active`
270+ ) ;
271+
272+ global . fetch = jest . fn ( ) . mockImplementation ( mockFetch ) ;
273+
274+ registry . scan ( document . body ) ;
275+ await utils . timeout ( 1 ) ; // wait a tick for async to settle.
276+
277+ const events = [ ...document . querySelectorAll ( ".fc-event-title" ) ] ;
278+
279+ const event1 = events . filter ( ( it ) => it . textContent === "Event 1" ) [ 0 ] . closest ( ".fc-event" ) ; // prettier-ignore
280+ const event2 = events . filter ( ( it ) => it . textContent === "Event 2" ) [ 0 ] . closest ( ".fc-event" ) ; // prettier-ignore
281+ const event3 = events . filter ( ( it ) => it . textContent === "Event 3" ) [ 0 ] . closest ( ".fc-event" ) ; // prettier-ignore
282+
283+ console . log ( event3 . outerHTML ) ;
284+
285+ expect ( event1 . classList . contains ( "pat-inject" ) ) . toBe ( true ) ;
286+ expect ( event1 . classList . contains ( "pat-switch" ) ) . toBe ( true ) ;
287+ expect ( event1 . getAttribute ( "data-pat-inject" ) ) . toBe ( "target: #event-info; source: #document-body" ) ; // prettier-ignore
288+ expect ( event1 . getAttribute ( "data-pat-switch" ) ) . toBe ( "selector: #event-info; add: event-info--active; remove: event-info--inactive" ) ; // prettier-ignore
289+
290+ expect ( event2 . classList . contains ( "pat-inject" ) ) . toBe ( true ) ;
291+ expect ( event2 . classList . contains ( "pat-switch" ) ) . toBe ( true ) ;
292+ expect ( event2 . getAttribute ( "data-pat-inject" ) ) . toBe ( "target: #event-info; source: #document-body" ) ; // prettier-ignore
293+ expect ( event2 . getAttribute ( "data-pat-switch" ) ) . toBe ( "selector: #event-info; add: event-info--active; remove: event-info--inactive" ) ; // prettier-ignore
294+
295+ expect ( event3 . classList . contains ( "pat-inject" ) ) . toBe ( true ) ;
296+ expect ( event3 . classList . contains ( "pat-switch" ) ) . toBe ( true ) ;
297+ expect ( event3 . getAttribute ( "data-pat-inject" ) ) . toBe ( "target: #event-info; source: #document-body" ) ; // prettier-ignore
298+ expect ( event3 . getAttribute ( "data-pat-switch" ) ) . toBe ( "selector: #event-info; add: event-info--active; remove: event-info--inactive" ) ; // prettier-ignore
299+
300+ global . fetch . mockClear ( ) ;
301+ delete global . fetch ;
302+ done ( ) ;
303+ } ) ;
304+
259305 it ( "Loads correct date if set in query string" , async ( done ) => {
260306 const el = document . querySelector ( ".pat-calendar" ) ;
261307 el . setAttribute ( "data-pat-calendar" , "timezone: Europe/Berlin" ) ;
0 commit comments