@@ -213,6 +213,43 @@ export default class EventOptionsTests extends LogControllerTestCase {
213213 this . assertActions ( { name : "log" , eventType : "toggle" } )
214214 }
215215
216+ async "test custom action option callback event contains params" ( ) {
217+ let lastActionEventParams : Object = { }
218+
219+ // clone the params to ensure we check the value as the callback receives it
220+ // not the event after all actions have resolved
221+
222+ const mockCallback = ( { event : { params = { } } = { } } ) => {
223+ lastActionEventParams = { ...params }
224+ }
225+
226+ this . application . registerActionOption ( "all" , ( options : Object ) => {
227+ mockCallback ( options )
228+ return true
229+ } )
230+
231+ this . buttonElement . setAttribute ( "data-c-custom-number-param" , "41" )
232+ this . buttonElement . setAttribute ( "data-c-custom-string-param" , "validation" )
233+ this . buttonElement . setAttribute ( "data-c-custom-boolean-param" , "true" )
234+ this . buttonElement . setAttribute ( "data-d-should-ignore-param" , "_IGNORED_" )
235+
236+ await this . setAction ( this . buttonElement , "click->c#log:all" )
237+
238+ await this . triggerEvent ( this . buttonElement , "click" )
239+
240+ this . assertActions ( { name : "log" , identifier : "c" , eventType : "click" , currentTarget : this . buttonElement } )
241+
242+ const expectedEventParams = {
243+ customBoolean : true ,
244+ customNumber : 41 ,
245+ customString : "validation" ,
246+ }
247+
248+ this . assert . deepEqual ( this . controllerConstructor . actionLog [ 0 ] . params , expectedEventParams )
249+
250+ this . assert . deepEqual ( lastActionEventParams , expectedEventParams )
251+ }
252+
216253 setAction ( element : Element , value : string ) {
217254 element . setAttribute ( "data-action" , value )
218255 return this . nextFrame
0 commit comments